我一直在研究正则表达式,而我正在为此努力。在此页面(https://www.regular-expressions.info/conditional.html)上,我看到在条件正则表达式中,对编号反向引用的引用只是一个数字。例如,
(a)?b(?(1)c|d)
正则表达式如何知道我们不应该将数字“ 1”而不是对第一个捕获组的反向引用匹配?在先前的课程中,我了解到可以避免使用反向引用,例如\ 1,\ 2等。
按照正则表达式教程,您将遵循:
一种特殊的构造
(?ifthen|else)
使您可以创建条件正则表达式。如果if部分评估为true,则正则表达式引擎将尝试匹配then部分。否则,尝试使用else部分。语法由一对括号组成。 左括号必须跟一个问号,紧接着是if部分,然后是then部分。这部分后面可以有一个竖线和else部分。您可以省略其他部分,以及垂直栏。
或者,您可以在if部分中检查到目前为止捕获组是否已参加比赛。将捕获组的编号放在括号内,并将其用作if部分。
您的第二个问题是:
请注意,我添加了单词边界以避免abd
部分匹配字符串。
如果有人实际上想以这种方式匹配文字1怎么办?
有效输入:
1c
或d
无效输入:1d
那将是:
\b(1)?(?(1)c|d)\b
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句