【发布时间】:2021-09-15 00:21:14
【问题描述】:
我正在尝试获取所有文本,但不是在内联代码 (`) 或代码块 (```) 中。我的正则表达式工作正常,但最后一个文本不匹配,我不知道为什么。
我当前的正则表达式:
(.*?)`{1,3}(?:.*?)`{1,3}(.*?)
你可以在这里查看结果:https://regex101.com/r/lYQnUJ/1/
也许有人知道如何解决这个问题。
【问题讨论】:
-
能否请您提及您正在寻找的正则表达式是哪种语言?
-
使用
"(?s)```.*?```|`[^`]*`"分割(参见demo,其中匹配项被替换为“---”行)。最后一部分不匹配,因为您的正则表达式末尾的(.*?)与任何文本都不匹配。如果你删除它,什么都不会改变。 -
@RavinderSingh13:对不起,我添加了 pcre 和 php 标签。
-
@WiktorStribiżew:你的意思是这样的:regex101.com/r/6aqtVC/1?不幸的是,它是一样的。最后的文本部分也不匹配。 :/ 感谢最后一组可以删除的提示。
-
见
print_r(preg_split('~```.*?```|`[^`]*`~s', $text))3v4l.org/2kO6K。输出是你期望的吗?