我需要在我的@<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
答案 0 :(得分:2)
您要搜索的正则表达式为@<\\d+\\|(.*?)>@
。替换模板为$1
。
分解正则表达式:
@<
将匹配表达式的前缀\\d+
将匹配至少一位数字\\|
将与|
字符匹配>@
);括号创建一个子模式,该模式将映射到替换字符串中的$1
>@
将匹配模式的结尾 ?
解决了*
量词的贪婪问题,如果没有*
对最后一个示例不起作用,因为它会匹配第一个@<
和最后>@
。