我在设计正则表达式时遇到了问题。我甚至不确定这是否有可能。
我想匹配n个字符,但其中之一必须是换行符(或任何定义的字符)。
这是我的意见:
0000000
0000000
000A000
00AB000
AAAB000
ABBB000我的(不工作的)正则表达式是
.*A.{5}A.{5}A.{5}A.*仅将模式更改为DOTALL是不够的,因为我必须确保每个匹配的A之间有一个行间隔。
我只想知道我的输入是否匹配,我不想提取任何东西。
我想检查我的输入中是否有一个A-diagonal。
发布于 2014-09-30 11:53:10
对于DOTALL,.也在换行符中进行计数。您可能希望使用A(?:[\r\n]*[^\r\n]){5},其中我将[\r\n]用作换行符,而将否定[^\r\n]用作非换行符。
在此之前或之后,对任意数量的任何字符至少重复4次:
.*?(?:A(?:[\r\n]*[^\r\n]){5}[\r\n]*){4,}.*另外,还可以在前瞻之后使用负的A来验证,没有至少7个字符的序列没有换行符:(?![^\r\n]{7}),因此模式如下:
.*?(?:A(?![^\r\n]{7})(?:[\r\n]*[^\r\n]){5}[\r\n]*){4,}.*regex101测试
发布于 2014-09-30 11:36:05
下面的regex将确保A之间有一个换行符。
(?:(A)(?:(?=.*?\n)(?=.*?.).){6}){1,}(?=(A))演示
发布于 2014-09-30 11:15:38
^[^A]*|(A.{6})尝试this.This将与您的input.Because匹配,有一个\n .{5}正在创建problems.When,您将其更改为.{6}哟,得到正确的input.See,captures.Do不要忘记添加s和g修饰符。
见演示。
http://regex101.com/r/nA6hN9/46
https://stackoverflow.com/questions/26118838
复制相似问题