【发布时间】:2021-11-02 16:23:14
【问题描述】:
是否可以在n 的有限长度内指定匹配x...(a and b)...y 的正则表达式?
更准确地说:
- 匹配的
x和y之间的字符长度最多为n。 - 在匹配的
x和y之间必须同时存在a和b(不考虑顺序)。 -
x、a、b和y这里可以代表多字符字符串 sn-p。
测试用例(假设n = 10):
Match:
...x..a...b..y...
...x..b...a..y...
...x..a...b..y...a...
...x..a...b..y...b...
...x..a...b..y...y...
...x..a.x.b..y...
...x..a.y.b..y...
...xaabbaabbay...
...x..a...b..y... ...x..a...b..y... (2 matches)
...xaby...xaby... (2 matches)
Don't match:
...x..a...b......
...x......b..y...
...x..a......y...
...x..a...b......y...
...x......b..y...a...
...x..a......y...b...
...x..a.y.b......
...x..a.y.b......y...
...x..a.y.b.x....y...
.a.x......b..y...
.b.x..a......y...
P.S: 我知道这可以通过简单地匹配/x.{0,n}y/ 来完成,然后检查a 和b 是否都存在于许多编程语言的匹配字符串中。但是,此问题明确要求单一正则表达式方法,以便它可以在某些应用程序中用作查询,例如 Google Doc 和 Notepad++。
【问题讨论】:
-
是的,这是可能的(所有长度有限的模式都可以),但会很麻烦。可以使用前瞻吗?
-
我可以。你可以为这个问题制作一个有效的正则表达式吗?
-
请添加正则表达式应匹配
x...a.y.b...y到您的问题。而且它不应该 f.ex。匹配x...a.y.b..1234567890..y,这与第一个要求一起变得更加棘手。 -
@Thefourthbird 是的
-
@Thefourthbird 这也匹配
...x...a.yx.b...y...但不应该