RegularExpression检测以下文本格式:@< 10 | asdffdfs> @

时间:2016-01-04 11:50:54

标签: ios regex swift nsregularexpression

我需要在我的@<Number|Text>@应用程序中编写一个正则表达式来将Text替换为iOS

@<Number|Text>@

e.g。

  • @<12|abcd>@将为abcd
  • @<1|I am a good boy>>>>>@将为I am a good boy>>>>
  • @<a|abcd>@没有变化,因为第一部分不是数字
  • @<0|god bless me@>>@将为god bless me@>
  • @<01212|I love you!>@ Do you love me? @<0222| No, I love your sister>@将为I love you! Do you love me? No, I love your sister

我对正则表达不熟悉,有人可以帮帮我吗?

我的尝试:
@<(\d{1,})\|([\S]+)>@
@<(\d{1,})\|([\S\s]+)>@

P.S。欢迎任何其他解决方案。实际上我想做的是将@<ID|NAME>@替换为@NAME并将@NAME设为可点击(我使用TTTAttributedLabel),网址为goto://ID

1 个答案:

答案 0 :(得分:2)

您要搜索的正则表达式为@<\\d+\\|(.*?)>@。替换模板为$1

分解正则表达式:

  • @<将匹配表达式的前缀
  • \\d+将匹配至少一位数字
  • \\|将与|字符匹配
  • (。*?)将匹配任何字符直到正则表达式的下一部分(>@);括号创建一个子模式,该模式将映射到替换字符串中的$1
  • 最后,>@将匹配模式的结尾

?解决了*量词的贪婪问题,如果没有*对最后一个示例不起作用,因为它会匹配第一个@<和最后>@