繁体   English   中英

正则表达式 (或)在其中

[英]RegEx with | (or) in it

我有一个很长的正则表达式正在工作,但是最后我有一个部分让我感到困惑。 我有一种情况,我正在解析一些HTML,并且可能发生两种情况之一。 我正在搜索的模式以X结尾,然后紧跟一个数字,或者是  这是RegEx片段:

(X(\d+)| )

您可能已经注意到,我不在乎X或  ,我只想捕获那里的数字。 看来,为了使用|,我必须使用捕获组。 因此,如果该模式存在,我将同时得到X5和5。 我真的只希望捕获到那里的数字。

谢谢!

要获得分组的效果而没有捕获的效果,请使用(?:...)表示法:

(?:X(\d+)| )

除了不为X5创建捕获组,而仅为5创建捕获组,这与您编写的内容等效。

(顺便说一句,您说的是“一位数”,但是您的正则表达式具有\\d+而不是\\d ,因此它实际上可以匹配多个数字。)

您可以使用非捕获组吗?

(?:X(\d+)| )

尝试

(?:X(\d+)| )

添加?:实际上是在分组时禁用了反向引用。

使用非捕获组:

(?:X(\d+)| )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM