目前我正在尝试查看正则表达式java中单词末尾是否有句点,问号或感叹号。这是我正在尝试的:
if(Pattern.matches("[.!?]$", "test.")){
// do stuff
}
这里我只是使用示例test.
,这是一个单词并且在结尾处有一个句点。这个正则表达式不会捡起来。我正在使用此正则表达式,因为它将在句子末尾查找三个.!?
,因为我使用的是$
。
答案 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`