【发布时间】:2017-01-05 07:55:24
【问题描述】:
我正在尝试用标签替换下划线之间的文本。 这是我目前使用的模式(链接到在线测试器:TESTER):
[^\\]?_(([^_]*)[^\\])_
这是我想要得到的结果:
_test1_ _test2__test3_ \_test4\_ => <b>test1</b> <b>test2</b><b>test3</b> \_test4\_
谁能告诉我我的模式有什么问题?
【问题讨论】:
-
尝试
(?<!\\)((?:\\{2})*)_([^_\\]*(?:\\.[^_\\]*)*)_(替换为$1<b>$2</b>)。在 PHP 中,\必须在模式中定义为\\\\。 -
你能解释一下模式的第一部分吗? (?
-
(?<!\\)((?:\\{2})*)_部分匹配未转义的_:任意数量的双\符号前面没有\。它是否按预期工作? -
是的,它工作得非常好,谢谢:)