我想按照以下规则将字符串拆分为数组:
适合正则表达式的子字符串,以及不适合的子字符串。我的正则表达式是"\\[((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/