匹配没有数字的行后跟“。”

时间:2011-06-25 16:40:18

标签: regex

更新:我想匹配一行,以("开头,后跟一个数字,然后是“。”以外的任何内容。 。例如

  

("10 Advanced topics 365" "#382")

是匹配,而

("10.1 Approximation Algorithms 365" "#382")

不匹配。

我的正则表达式是

^\(\"\d+(?!\.).*?$

但它会匹配上面的两个例子,包括第二个例子。那我在这里错过了什么?

谢谢和问候!

2 个答案:

答案 0 :(得分:2)

虽然可以编写一个与这样的东西相匹配的RE(参见 manji 的回答)但我讨厌这样的事情;他们以后很难理解。我发现写一个RE来匹配你不想要的情况更容易,然后让程序的其余部分以RE 而不是匹配为条件。这实际上是微不足道的。


修改 有时你可以做得更好。如果我们想要区分你描述的线条类型,那么好线条在第一个数字之后没有一个周期,并且那时总是有一些文字:

("10 Advanced topics 365" "#382")
("10.1 Approximation Algorithms 365" "#382")

然后这个表格的正则表达式就足够了:

^\("\d+[^.].*

您可能需要更多来更精确地匹配线的其余部分(例如,检测它是否以正确的字符序列结束)但是这是分开的。

答案 1 :(得分:1)

通过更新

^\("\d[^.]*$

尝试这种模式:

(?m)^(?!.*?\d\.).*$