构建一个对匹配之间的字符串中间的文本无关的正则表达式

时间:2017-09-20 02:27:47

标签: ios regex nsregularexpression

我正在处理任何形状或大小的字符串。我构建了我的初始正则表达式来匹配现金标签或符号$fb

/( ?[$]\w{3,5} ?){3,}/

因此,对于像"I like stocks $fb $goog $aapl"这样的字符串,它可以正常工作。

对于像"I like $fb and other stocks like $goog and $aapl"这样的字符串,它不起作用。

如何改变我的正则表达式来达到这个目的。基本上识别3 + 3-5个char a-zA-z字符串,前面是$

谢谢!

1 个答案:

答案 0 :(得分:0)

我对问题感到困惑,但我认为我可以用答案覆盖所有情况 - 当任何字符串包含三个或更多"合并变量"时,您正在寻找匹配$ varname ,其中 varname 是3-5个字符。混乱来自你的例子,因为$ fb不符合这个标准。在任何情况下,java或javascript中的这种模式都能满足您的需求( varname 为2-5个字符以容纳" $ fb"):

(?:\$\w{2,5}[^$]+){3,}

其中(?: pattern )表示非捕获组。这样可以成功匹配两个示例字符串。

请注意,如果你的目标是在组中捕获变量本身,那么这种方法将不起作用,作为一个"捕获组"在非捕获组内部将仅捕获我使用的任何正则表达式实现中的最后一个匹配。如果这是你的目标,你最好只是简单地匹配捕获组中的变量,然后测试你是否捕获了3个或更多匹配。

注意:我意识到我没有使用您在问题中声明的实现,但我怀疑我在这里使用的任何技术都不能以某种形式提供给您与...合作。