用于匹配模式的短语的字符串正则表达式

时间:2013-12-14 00:43:20

标签: java regex

我试图理解包含可变单词的短语的正则表达式模式。例如,如果我正在扫描段落,我希望能够提取与此模式匹配的所有短语,“ _ 着色 < /强> _ ”。两个空白点可以是任何东西,因此“红色卡车”和“蓝色自行车”都匹配正则表达式并被提取。如果有人能帮助我,我将非常感激,谢谢!

2 个答案:

答案 0 :(得分:3)

这样的模式应该有效

\w+\s+colored\s+\w+

这匹配一个或多个word characters的所有序列,后跟一个或多个空格字符,后跟文字序列colored,后跟一个或多个空白字符,后跟一个或多个单词字符。

如果您想轻松提取两侧的两个单词,您可能需要将它们放在capture groups中,如下所示:

(\w+)\s+colored\s+(\w+)

如果您想查找的短语不仅仅包含单词colored的短语,您可以使用替换,如下所示:

(\w+)\s+(colored|flavored|scented)\s+(\w+)

这将匹配“蓝色自行车”,“樱桃味伏特加”和“培根香味蜡烛”之类的字符串。

另外,因为这是Java,所以不要忘记转义字符串文字中的\字符:

Pattern pattern = Pattern.compile("\\w+\\s+colored\\s+\\w+");

答案 1 :(得分:0)

这应该适合你。

Pattern samplePattern = Pattern.compile("[A-Za-z0-9._%-]+colored[A-Za-z0-9._%-]");