在正则表达式中匹配带有句点的单词

时间:2016-08-16 03:25:49

标签: java regex

目前我正在尝试查看正则表达式java中单词末尾是否有句点,问号或感叹号。这是我正在尝试的:

if(Pattern.matches("[.!?]$", "test.")){
   // do stuff
}

这里我只是使用示例test.,这是一个单词并且在结尾处有一个句点。这个正则表达式不会捡起来。我正在使用此正则表达式,因为它将在句子末尾查找三个.!?,因为我使用的是$

2 个答案:

答案 0 :(得分:3)

Pattern.matches匹配整个字符串。您可以修改模式,也可以改为使用Matcher.find

选项1:

Pattern.matches(".*[.!?]", "test.")

选项2:

Pattern.compile("[.!?]$").matcher("test.").find()

答案 1 :(得分:0)

您可以使用正则表达式的正向前瞻来搜索单词前面的.!?。您可以查看this StackOverflow answer以了解有关正面和负面前瞻的更多信息。

(\w+)(?=[.!?])

请参阅此link

使用

Pattern.matches("(\\w+)(?=[.!?])]", "test! tset some ohter! wordsome?")

匹配信息

MATCH 1
1.  [0-4]   `test`
MATCH 2
1.  [16-21] `ohter`
MATCH 3
1.  [23-31] `wordsome`