首页 > 解决方案 > 使用带有子字符串限制的正则表达式进行模式匹配

问题描述

我正在研究*字符的字符串消息中的模式匹配。这样我就可以识别两个*字符之间的任何子字符串。

我可以使用下面的正则表达式来做到这一点

[*]((?s).*?)[*]

这个正则表达式返回我想要的所有预期结果,除了它还考虑*对,如果两个*字符像(例如:)一样 Test**ing

我需要在匹配模式时避免这种情况。

无论如何,我可以在正则表达式匹配时添加一些条件,即如果*字符后面跟着另一个 *,则忽略该匹配并仅在两个*字符之间有另一个字符/字符时才返回匹配。

例如:

**test -> 这不应该返回任何匹配

***test*-> 它应该返回 *test*

***testing* message *additional*-> 它应该返回 *testing* 和 *additional*

让我知道,如果有什么不清楚的地方。

标签: iosswiftregex

解决方案


s不是在正则表达式中获取字符串的方法。我们使用[a-z]. 要满足星号之间的所有大小写,请使用:

[*](([A-Za-z]+).*?)[*]

请参阅此处了解由此产生的结果。


推荐阅读