【发布时间】:2021-10-25 10:42:50
【问题描述】:
我正在尝试提取字符串的一部分,其中在正则表达式中设置了多个模式,并使用条件 OR ("|") 来测试它们。 不幸的是,我的第一个条件包含在第二个条件中,并将我的结果分成两组而不是一组。
我正在使用 C# 基本系统正则表达式。
这是我想要的一个例子:
我的字符串:abcdefghijklmopqrstuvwxyz
我的正则表达式:[a-m]+|[a-z]+
结果是 2 次匹配:
(1) : abcdefghijklm
(2) : opqrstuvwxyz
我想将整个字符串作为匹配项,即使在 (3) 结果中也是如此
有没有办法在不切换2个条件的情况下做到这一点?
真诚地, 和平与爱25
【问题讨论】:
-
试试这个正则表达式
[a-z]+。 -
用你当前的语法是不可能的。正则表达式将继续查找匹配项(除了向后查找但不匹配)。因此,在您的第一个条件匹配后,它不会将光标移回另一个匹配项。
-
@Max 我的例子是我想要达到的简化版本,让我解释一下:我当然可以做 [az]+ 但在我的情况下 [am] 是另一个复杂的正则表达式
-
regex
[a-m]+仅与字符在该范围内的顺序不匹配。所以aamm也会匹配 -
确保您想要优先考虑的替代方案是第一位的 - 这是唯一正确的方法。现实生活中的解决方案可能完全不同,因为这是一个 XY 问题。