正则表达式 在单一组中捕获字符后面的字符本身或其他特定字符
问题描述
我正在尝试处理一个代码,其中注释可以用以下方式表示: !
, !!
, 或 !>
。
我想在一个单一组中匹配所有这些可能性,但是我尝试了到目前为止,无论我尝试什么,似乎都会将 !
在 !!
或 !>
等中匹配为单独的实体。
示例: https://regex101.com/r/u0vMY6/2
如果有人能帮助解决这个问题,那将非常棒,并帮助我取得进展。
更具体地说,我想通过匹配注释定界符后面有0个或2个以上的空格和一个单词来实现这一目标。
我在这里总结了我想要实现的内容: https://regex101.com/r/u0vMY6/4
如果需要,我可以将其拆分成多个检查步骤。
我对正则表达式并不是很熟悉,但是已经阅读了各种备忘单和stackoverflow问题,但是还没有找到解决方案。感谢任何帮助。
解决方案
你可以使用以下正则表达式:
查看 正则表达式演示 .
详细信息 :
! [!>#]?
- 一个!
字符后面跟着一个可选的!
,>
,#
-
- 两者之中的一个:
(?=[^\s!>#$]|\s{2}|\s\$)
- 一个正向先行断言,如果其后紧跟着[^\s!>#$]
- 任何字符,除了空格、!
、>
、#
、$
|
- 或\s{2}
- 两个空格|
- 或\s\$
- 空格,然后是一个$
|
- 或者\$(?!\S)
- 一个$
字符后面跟着一个空白边界
\s*
- 零个或多个空格(.*)
- 第二组:剩余的字符串。