注意:这是关于现代正则表达口味的可能性的问题.这不是使用其他方法解决这个问题的最佳方法.它受到早期问题的启发,但不仅限于正则表达式.
在ASCII"图像"/ art/map/string中:
....X.......
..X..X...X....
X.X...X..X.....
X....XXXXXX.....
X..XXX...........
.....X..........
..............X
..X...........X....
..X...........X....X...
....X.....
Run Code Online (Sandbox Code Playgroud)
我想找到三个简单的垂直线形式X:
X
X
X
Run Code Online (Sandbox Code Playgroud)
线条的数量在图像中是可变的,每条线条的宽度也是可变的.
使用正则表达式(PCRE/PHP,Perl,.NET或类似)可以:
最近我(通过一些尴尬)意识到正则表达式lookbehind assertions 是不可能的Javascript.
这种断言缺席的(事实)理由是什么似乎很常见?
我意识到也许有其他方法可以实现相同的功能,虽然它是工作中禁止功能的基本语义,还是究竟是什么?
似乎一些从正则表达式模式生成Javascript代码的正则表达式测试工具似乎忽略了这个事实 - 这让我觉得有些奇怪.
在正则表达式中匹配重复的字符很简单,使用反向引用:
(.)\1
Run Code Online (Sandbox Code Playgroud)
但是,我想在这对角色之后匹配角色,所以我想我可以简单地将它放在一个后视镜中:
(?<=(.)\1).
Run Code Online (Sandbox Code Playgroud)
这是为什么?在其他方面,我不会感到惊讶,因为对lookbehinds有强烈的限制,但.NET通常支持lookbehinds中任意复杂的模式.