1

我一直在尝试为此编写一个正则表达式,但到目前为止还没有成功。

_ any thing\_ fdfdf \_ any thing_

下划线,然后是 _ 之前的任何字符。

\_是一个转义字符,所以正则表达式必须接受这样的字符串。

_ any \_ thing _

以下字符串:

checking_ happens \_ ano\_ther _ test of bold _ and escape \_asteric

应该给:

_ happens \_ ano\_ther _

到目前为止,我只能想出这个:

(\\_)|_[^_]*[\\_]*[_]
4

1 回答 1

2

这可以完成工作:

(?<!\\)(?:\\\\)*_((?:[^_\\]|\\.)+)_

打破它:

  • (?<!\\)(?:\\\\)*- 匹配偶数个反斜杠,前面没有更多反斜杠
  • _- 后跟一个下划线
  • ((?:[^_\\]|\\.)+)- 匹配以下1次或多次
    • [^_\\]- 除下划线或反斜杠外的任何字符
    • \\.- 任何反斜杠/字符对(例如\_\\
  • _- 匹配尾随下划线

这将捕获第一组中下划线之间的字符串。

于 2012-05-23T10:02:02.463 回答