我想按照以下规则将字符串拆分为数组:
适合正则表达式的子字符串,以及不适合的子字符串。我的正则表达式是"\\[((id)|(club))[0-9]+\\|[^]]+\\]"

例如,如果我有一个字符串"Hi, [id123|Alex]! Check out [club3123|this awesome club]! It's fantastic!"

我想获得一个数组["Hi, ", "[id123|Alex]", "! Check out ", "[club3123|this awesome club]", "! It's fantastic!"]

我认为,我的正则表达式应该类似于myregexp或非myregexp。我试图用谷歌搜索,但没有用。请帮我。

最佳答案

您可以在Matcher#find中使用此正则表达式:

(\\[(?:id|club)[0-9]+[^]]+\\]|.+?(?=\\[(?:id|club)[0-9]+[^]]+\\]|$))


Working Demo

说明:它匹配给定正则表达式\\[(?:id|club)[0-9]+[^]]+\\]的文本或任何1或长度的任意文本,直到使用lookahead(?=\\[(?:id|club)[0-9]+[^]]+\\]|$)在前面找到您的注册表为止。

关于java - Java/Android:正则表达式或逆函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24246164/

10-10 10:10