我想按照以下规则将字符串拆分为数组:
适合正则表达式的子字符串和不适合的子字符串。我的正则表达式是 "\\[((id)|(club))[0-9]+\\|[^]]+\\]"
例如,如果我有一个字符串“嗨,[id123|Alex]!看看[club3123|这个很棒的俱乐部]!太棒了!”
我想要一个数组["嗨,","[id123|Alex]","!看看","[club3123|这个很棒的俱乐部]","!太棒了!"]
我认为,我的正则表达式应该类似于 myregexp 或不是 myregexp。我尝试用谷歌搜索这个,但没有用。请帮助我。
最佳答案
您可以在 Matcher#find
中使用此正则表达式:
(\\[(?:id|club)[0-9]+[^]]+\\]|.+?(?=\\[(?:id|club)[0-9]+[^]]+\\]|$))
Working Demo
说明:它与给定正则表达式的文本匹配 \\[(?:id|club)[0-9]+[^]]+\\]
或任何长度为 1 或长度的任意文本,直到使用 (?=\\[(?:id|club)[0-9]+[^]] 使用
。lookahead
提前找到您的reges +\\]|$)
关于Java/Android : Regexp or inversed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24246164/