测试字符串:
*This* is a test.[15] I would like[16] To figure _out how_ to do this.[20]
字符串
RegEx:
/\[\d+\]|\*.*\*|_.*_/gu
型
实际结果:
Match 1: *This*
Match 2: [15]
Match 3: [16]
Match 4: _out how_
Match 5: [20]
型
预期结果:
Match 1: *This*
Match 2: is a test.
Match 3: [15]
Match 4: I would like
Match 5: [16]
Match 6: To figure
Match 7: _out how_
Match 8: to do this.
Match 9: [20]
型
2条答案
按热度按时间p8h8hvxi1#
您可以考虑这种方法,它使用捕获组分割输入,并使用
filter
从一开始就删除空匹配。字符串
RegEx详情:
(
:启动捕获组\*[^*]*\*
:匹配*
中 Package 的子字符串|
:或_[^_]+_
:匹配_
中 Package 的子字符串|
:或\[\d+\]
:匹配[number]
部件)
:结束捕获组soat7uwm2#
如果你正在寻找一个纯正则表达式实现。在当前的正则表达式中,您没有包含“非特殊”单词的匹配,因此它们不会显示在匹配中。
只修改你已经拥有的正则表达式。您需要以下内容
字符串
在这里,
.+?
的添加是一个非贪婪匹配,直到正则表达式遇到任何在正向前瞻(?=\[|_|\*)
中提到的字符,即基于您的示例设置的'['或'_'或'*'。