Regex 正则表达式If-Else条件示例
我试图实现一个正则表达式“if-else”条件 我看到许多示例说明了以下格式Regex 正则表达式If-Else条件示例,regex,Regex,我试图实现一个正则表达式“if-else”条件 我看到许多示例说明了以下格式(?(?=regex)then | else) 所以我尝试了一下:(?(?=a)1 | 2) 据我所知(我所期望的):如果有一个1后跟(正向展望)a,则匹配!。否则,搜索2,查看是否存在匹配项 输入如下,我原以为1会突出显示,但结果是2 1a 2a 有人能告诉我为什么吗 谢谢(?(?=abc)1 | 2)-如果正向前瞻成功,则此条件检查 因此,首先它检查abc是否跟随当前位置。如果这是真的,则匹配1。这与正向前瞻相矛盾
(?(?=regex)then | else)
所以我尝试了一下:(?(?=a)1 | 2)
据我所知(我所期望的):如果有一个1
后跟(正向展望)a
,则匹配!。否则,搜索2
,查看是否存在匹配项
输入如下,我原以为1会突出显示,但结果是2
1a
2a
有人能告诉我为什么吗
谢谢(?(?=abc)1 | 2)
-如果正向前瞻成功,则此条件检查
因此,首先它检查abc是否跟随当前位置。如果这是真的,则匹配1
。这与正向前瞻相矛盾,因为如果abc
跟随当前位置,您将无法匹配1
2a
匹配2
,因为正向前瞻失败,所以引擎尝试匹配2
1a
2a
另一方面,(?(?=abc)a | 2)
将匹配abc
中的a
(?(?=abc)1 | 2)
-如果正向前瞻成功,则此条件检查
因此,首先它检查abc是否跟随当前位置。如果这是真的,则匹配1
。这与正向前瞻相矛盾,因为如果abc
跟随当前位置,您将无法匹配1
2a
匹配2
,因为正向前瞻失败,所以引擎尝试匹配2
1a
2a
另一方面,(?(?=abc)a | 2)
将匹配abc
中的a
来自:
特殊构造(?ifthen | else)
允许您创建条件正则表达式。如果If部件的计算结果为true
,则正则表达式引擎将尝试匹配then部件。否则,将尝试使用else部分
因此,(?(?=a)1 | 2)
regex的工作原理如下:
- 如果右边的下一个字符是
a
- 然后尝试匹配并使用
(由于1
!=1
,因此保证失败)a
- 否则,尝试匹配
2
1
后面加上一个前瞻,以限制其上下文:
(1(?=a)|2)
它会匹配的
-1(?=a)
如果后跟1
a
-或|
-匹配2
2
(?ifthen | else)
允许您创建条件正则表达式。如果If部件的计算结果为true
,则正则表达式引擎将尝试匹配then部件。否则,将尝试使用else部分
因此,(?(?=a)1 | 2)
regex的工作原理如下:
- 如果右边的下一个字符是
a
- 然后尝试匹配并使用
(由于1
!=1
,因此保证失败)a
- 否则,尝试匹配
2
1
后面加上一个前瞻,以限制其上下文:
(1(?=a)|2)
它会匹配的
-1(?=a)
如果后跟1
a
-或|
-匹配2
2
abc
的字符串中,你真的不能期望任何abc
的匹配。这里有很多帮助:@Aaron,我正在使用Java。我不知道正则表达式没有得到很多人的支持。谢谢你让我知道你仍然忽略了环视仪的要点:它们是在你放置它们的地方执行的,所以,(?(?=a)1 | 2)
永远不会尝试匹配1
,因为1
不是a
(和(?=a)1
确切地说,引擎将首先尝试将紧跟着a
的位置与前瞻相匹配,这将导致失败,因此else分支将触发,2
将被尝试,而不是1
。如果您想在1
之后检查a
,您将使用(?(?=1a)1 | 2)
,但您可能只需要像(1(?=a)| 2)这样的一个简单的替换
你使用哪种语言/工具来运行你的正则表达式?很多人都不支持环顾条件。你真正的问题是什么?现实生活中的场景是什么?你真的不能期望在一个不包含abc
的字符串中匹配abc
。这里有很多帮助:@Aaron,我在使用Java。我不知道正则表达式不是得到许多人的支持。感谢你告诉我你仍然忽略了环顾四周的要点:它们在你放置它们的地方执行,因此,(?(?=a)1 | 2)
永远不会尝试匹配1
,因为1
不是a
(和(?=a)1
确切地说,引擎将首先尝试将紧跟着a
的位置与前瞻相匹配,这将导致失败,因此else分支将触发,2
将被尝试,而不是1
。如果您想在1
之后检查a
,您将使用(?(?=1a)1 | 2)
,但你可能只需要像(1(?=a)| 2)
Turczyn,非常感谢你的回答。实际上我刚刚尝试将正则表达式更改为(?=a)1 | 2,(输入保持不变),但'1a'的'1'仍然无法检测到。你能告诉我为什么吗?@Joe Becuase in1a
正向前瞻(?=a)
失败,因此它不匹配1
,而是尝试匹配2
,因为它位于cinditional.Turcz的“else”部分