Regex 如何排除带有。。。正则表达式中的
我的文件中有以下目录和章节:Regex 如何排除带有。。。正则表达式中的,regex,Regex,我的文件中有以下目录和章节: 1.2 Purpose .................... 8 1.3 System Overview ............ 8 1.4 Document Overview .......... 8 1.5 Definitions and Acronyms ......... 9 2.1.3.3.8 FOO 2.1.3.3.9 BAR 2.1.4 TEST 我想提取节名,忽略作为目录一部分的行 我一直在尝试这个正则表达式: ^(
1.2 Purpose .................... 8
1.3 System Overview ............ 8
1.4 Document Overview .......... 8
1.5 Definitions and Acronyms ......... 9
2.1.3.3.8 FOO
2.1.3.3.9 BAR
2.1.4 TEST
我想提取节名,忽略作为目录一部分的行
我一直在尝试这个正则表达式:
^((?:\d{1,2}\.)+(?:\d{1,2})+)\s.+(?!\.\.\.).*$
但是,我一直在捕获目录行
如何排除带有….的行。。。。弦
谢谢 这里的问题是,您只在一个非常特定的位置排除了
s;你的消极前瞻比赛没有超出它所处的位置。考虑一下:
^(\d{1,2}(?:\.\d{1,2})*)\s*[^.]*(?!.*\.{3}).*$
# ^^
…下面带有胡萝卜的字符非常重要:它们不仅使负前瞻适用于该特定点,而且也适用于该点之后的任何位置。它是逐行的。我希望\1包含非TOC行中的节号。节名之后是否没有
…
。只有TOC行可以。因为您之前有一个+
,之后有一个*
,所以原始版本实际上可以选择它想要找到的任何位置,(?!\.\.\.\.\.\.\.\.\)
不匹配的位置——如果它找到任何一个这样的位置,您将获得成功。成功了。非常感谢。我认为,这一点对于引擎来说更容易一些:。@Stribizev,这是一个很好的调用——在做出否定断言之前,最好使用所有可用的空格;实际上,可以以相同的方式使用任何非期间内容。