我一直在试图理解包含可变单词的短语的正则表达式模式。例如,如果我正在扫描一个段落,我希望能够提取与此模式匹配的所有短语,“_ 彩色 _”。两个空白点可以是任何内容,因此“红色卡车”和“蓝色自行车”都将与正则表达式匹配并被提取。如果有人能帮助我,我将不胜感激,谢谢!
最佳答案
像这样的模式应该有效
\w+\s+colored\s+\w+
这匹配一个或多个 word characters 的任何序列,后跟一个或多个空白字符,后跟文字序列 colored
,后跟一个或多个空白字符,后跟一个或多个单词字符。
如果您想轻松提取两侧的两个单词,您可能需要将它们放在 capture groups 中,像这样:
(\w+)\s+colored\s+(\w+)
如果您想要查找更多短语,而不仅仅是包含单词 colored
的短语,则可以使用替换,如下所示:
(\w+)\s+(colored|flavored|scented)\s+(\w+)
这将匹配“蓝色自行车”、“樱桃味伏特加”和“培根香味蜡烛”等字符串。 p>
此外,因为这是 Java,所以不要忘记转义字符串文字中的 \
字符:
Pattern pattern = Pattern.compile("\\w+\\s+colored\\s+\\w+");
关于java - 与模式匹配的短语的字符串正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20578394/