所有目的bbcode正则表达式

时间:2017-07-15 23:35:21

标签: regex

目前,我的正则表达式:

\*\*(.+?)\*\*

返回 ***400 FAVES! Thank you so much for your love and support!**

当我投入时 [size=16]***400 FAVES! Thank you so much for your love and support!***[/size]

请注意,最后省略了额外的*。

有人可以告诉我为什么会发生这种情况以及最佳解决方案是什么?

2 个答案:

答案 0 :(得分:2)

如果您确定捕获字符串在开头和结尾包含3颗星,那么在这种情况下您可以使用\*{3}(.+?)\*{3}。否则,像\*(.+)\*这样的贪婪表达应该有效,只要在结尾和开头有一颗星。

输出:***400 FAVES! Thank you so much for your love and support!***

在你的情况下它最后返回2颗星的原因是正则表达式的非贪婪(.+?)部分尽可能少地匹配。

答案 1 :(得分:1)

这是非贪婪量词的正常行为(尽可能减少)。

您可以解决问题,包括捕获组中的可选星号,但这次使用贪婪的量词:

\*\*(.+?\**)\*\*

demo