更新:我想匹配一行,以("
开头,后跟一个数字,然后是“。”以外的任何内容。 。例如
("10 Advanced topics 365" "#382")
是匹配,而
("10.1 Approximation Algorithms 365" "#382")
不匹配。
我的正则表达式是
^\(\"\d+(?!\.).*?$
但它会匹配上面的两个例子,包括第二个例子。那我在这里错过了什么?
谢谢和问候!
答案 0 :(得分:2)
虽然可以编写一个与这样的东西相匹配的RE(参见 manji 的回答)但我讨厌这样的事情;他们以后很难理解。我发现写一个RE来匹配你不想要的情况更容易,然后让程序的其余部分以RE 而不是匹配为条件。这实际上是微不足道的。
修改强> 有时你可以做得更好。如果我们想要区分你描述的线条类型,那么好线条在第一个数字之后没有一个周期,并且那时总是有一些文字:
("10 Advanced topics 365" "#382")
("10.1 Approximation Algorithms 365" "#382")
然后这个表格的正则表达式就足够了:
^\("\d+[^.].*
您可能需要更多来更精确地匹配线的其余部分(例如,检测它是否以正确的字符序列结束)但是这是分开的。
答案 1 :(得分:1)
通过更新:
^\("\d[^.]*$
尝试这种模式:
(?m)^(?!.*?\d\.).*$