最佳答案
目前的答案有一些有用的想法,但我想要一些更完整的东西,我可以100% 理解和重用,这就是为什么我设置了一个赏金。对我来说,在任何地方都适用的想法也比不像 \K
这样的标准语法更好
这个问题是关于除了某些情况 s1 s2 s3之外,如何匹配模式。我给出了一个具体的例子来说明我的意思,但我更喜欢一个我能100% 理解的一般性答案,这样我就可以在其他情况下重用它。
例子
我想用 \b\d{5}\b
匹配五个数字,但不是在三种情况下,s1,s2,s3:
不在以句号结尾的句子上。
S2: 括号内没有任何地方。
S3: 不在以 if(
开始并以 //endif
结束的块中
I know how to solve any one of s1 s2 s3 with a lookahead and lookbehind, especially in C# lookbehind or \K
in PHP.
比如说
S1 (?m)(?!\d+.*?\.$)\d+
使用 C # 查看 (?<!if\(\D*(?=\d+.*?//endif))\b\d+\b
后面的 s3
s3 with PHP \K (?:(?:if\(.*?//endif)\D*)*\K\d+
但是混杂在一起的环境让我的脑袋爆炸了。更坏的消息是,我可能需要在另一个时间添加其他条件 s4s5。
好消息是,我不在乎是否使用 PHP、 C # 、 Python 或我邻居的洗衣机等最常用的语言来处理文件。:)我基本上是 Python & Java 的初学者,但我很想知道它是否有解决方案。
所以我来看看有没有人能想出一个灵活的食谱。
提示是可以的: 你不需要给我完整的代码。 :)
谢谢你。