Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RegExp-忽略标记外部的字符串_Java_Regex_String_Extract - Fatal编程技术网

Java RegExp-忽略标记外部的字符串

Java RegExp-忽略标记外部的字符串,java,regex,string,extract,Java,Regex,String,Extract,我需要Java RegExp,它可以匹配标记\begin{name}和\start{name}之间的所有内容,如下所示(标记可以嵌套): 在这种情况下,表达式应该忽略所有“im outside”部分。 有人能帮我吗? 提前谢谢 类似于: "\\\\start\{([a-zA-Z_][a-zA-Z_0-9]*)\}(.*?)\\\\end\{$1\}" 使用DOTALL标志以确保获得换行符。 里面是第二组 这实际上不能用正则表达式来完成。(当匹配开始标记时,需要递归地深入整个规则,这在正则表达式

我需要Java RegExp,它可以匹配标记\begin{name}和\start{name}之间的所有内容,如下所示(标记可以嵌套):

在这种情况下,表达式应该忽略所有“im outside”部分。 有人能帮我吗? 提前谢谢

类似于:

"\\\\start\{([a-zA-Z_][a-zA-Z_0-9]*)\}(.*?)\\\\end\{$1\}"
使用DOTALL标志以确保获得换行符。 里面是第二组

这实际上不能用正则表达式来完成。(当匹配开始标记时,需要递归地深入整个规则,这在正则表达式中是不可能的)。当外部标记也出现在其内部时,第一个末端标记将匹配

为此,您可以将标记与以下内容匹配:

"\\\\start\{([a-zA-Z_][a-zA-Z_0-9]*)\}"
并将标记名作为组1检索。并开始在列表中存储您当前所在的标签。然后将结束标记匹配为

"\\\\end\{([a-zA-Z_][a-zA-Z_0-9]*)\}"
并收集匹配标记之间的所有内容,同时确保标记匹配

如果标记名比标准标识符名宽,您可以相应地更改
[a-zA-Z_uu][a-zA-Z_u0-9]*


如果要解析文件,您需要这种方法

这不是正则表达式的工作。它需要跟踪开始标记及其匹配的结束标记。。。是否保证标签始终正确匹配,如果没有,您想做什么?此外,标记是否在一行中单独出现?嵌套标记是否可以具有相同的名称?@casimirithippolyte我必须解析一个文件,其中嵌套标记的名称可能是different@JimGarrison正如我提到的,我必须解析一个文件,但我可以假设标记是正确匹配的。
"\\\\end\{([a-zA-Z_][a-zA-Z_0-9]*)\}"