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