2016-08-16 39 views
0

目前我正在尝试查看在正则表达式java中是否有一个句点,问号或感叹号末尾的单词。下面是我想:在正则表达式中与句点匹配的词

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

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

+0

你忘了测试反对任何法律程序中'' – Rogue

+0

你是什么意思? – user081608

+0

'test.'会失败,因为它不是'',''''或'.',接着是EOI。根据你的模式,它以这些符号开始。 – Rogue

回答

2

Pattern.matches比赛对entir e字符串。您可以修改您的模式,也可以使用Matcher.find

选项1:

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

方案2:[!?]

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

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`