我有一个看起来像这样的正则表达式:
a(|bc)
Run Code Online (Sandbox Code Playgroud)
这个表达式完全匹配字符串"a",但它不匹配"abc".括号中的表达式是什么意思?
编辑: 使用C#和以下代码:
Match m = Regex.Match(TxtTest.Text, TxtRegex.Text);
if (m.Success)
RtfErgebnis.Text = m.Value;
else
RtfErgebnis.Text = "Gültig, aber kein Match!";
Run Code Online (Sandbox Code Playgroud)
"TxTTest"包含要测试的字符串(在本例中为"abc")."TxtRegex"包含正则表达式(在本例中为"a(| bc)")
"RtfErgebnis"显示"Gültig,aber kein Match!" 这意味着,正则表达式是有效的,但给定的测试字符串不匹配.
在旁注:
表达方式
a(|bc)d
Run Code Online (Sandbox Code Playgroud)
匹配"广告"以及"abcd".那么为什么前一个表达式与"abc"不匹配?
我对正常表达没有影响.我偶然发现了这个特例.我需要知道如何处理它以进行正则表达式解析和数据生成.
编辑2:
"RtfErgebnis"显示"Gültig,aber kein Match!" 这意味着,正则表达式是有效的,但给定的测试字符串不匹配.
我对传递的参数有一点错误,所以现在显示"a",这是完全正确的.
管道的意思是"或".你的第一个表达是"a,后面没有或bc ".因此,"a"是完全匹配,并且它不打算包括"bc".
第二个表达式是"a,后面没有任何东西或bc,后面是d".在该版本中,匹配仅在完全选择所有内容到"d"时完成.
如果你希望它更喜欢"bc"选项而不是任何选项,你可以重写你的表达式:
a(bc)?
Run Code Online (Sandbox Code Playgroud)
这意味着,"a,然后是零或一次出现bc",在这种情况下,大多数引擎会将"abc"而不是"a"视为完全匹配.
| 归档时间: |
|
| 查看次数: |
215 次 |
| 最近记录: |