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