java正则表达式匹配& [text(text - text text)!text]

时间:2017-02-28 20:15:46

标签: java regex

我目前正在创建一个正则表达式,以分割出符合以下格式的所有字符串:&[text(text - text text) !text]。这里的文字可以是任何字母。间距很重要。文本将如下所示列出。

我尝试过以下正则表达式,但我似乎无法让它工作:

&\\[([^\\]]*)\\]

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您将text替换为\w+以捕获1个或多个字词。 假设其他所有内容都是文字,则以下正则表达式应该起作用:

&\[\w+\(\w+ - \w+ \w+\) !\w+\]

如果您愿意,也可以使用[a-zA-Z]代替\w。它有时更容易理解,因为它明确地描述了要匹配的字符,a-zA-Z包含在内。

&\[[a-zA-Z]+\([a-zA-Z]+ - [a-zA-Z]+ [a-zA-Z]+\) ![a-zA-Z]+\]

仅限一个字符,请移除+

&\[\w\(\w - \w \w\) !\w\]

&\[[a-zA-Z]\([a-zA-Z] - [a-zA-Z] [a-zA-Z]\) ![a-zA-Z]\]

PS - 我无法记住-&!是否为正则表达式符号,如果是,您可以使用\-\& { {1}}或\!

P.P.S - 在java中,您必须转义\,以便\w成为字符串中的\\w

答案 1 :(得分:0)

如果您希望在以下情况下将text作为群组提取以使用它们:

&\\[(\\w+)\\((\w+)\\s\\-\\s(\\w+)\\s(\\w+)\\)\\s!(\\w+)]

example