【发布时间】:2012-06-27 21:53:55
【问题描述】:
我正在尝试在 java 中编写一个匹配单词和连字符的正则表达式。到目前为止,我有:
Pattern p1 = Pattern.compile("\\w+(?:-\\w+)",Pattern.CASE_INSENSITIVE);
Pattern p2 = Pattern.compile("[a-zA-Z0-9]+",Pattern.CASE_INSENSITIVE);
Pattern p3 = Pattern.compile("(?<=\\s)[\\w]+-$",Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
这是我的测试用例:
程式 Dsfasdf。程序 程序 Dsfasdf。 Dsfasdf。哇哇哇!哇。哇?好的。 他说:“嗨。” aasdfa. wsdfalsdjf.去去去- 至 asdfasdf .. , : ; " ' ( ) ? ! - / \ @ # $ % & ^ ~ ` * [ ] { } + _ 123任何帮助都会很棒
我的预期结果是匹配所有单词 ie。
程序 Dsfasdf 程序 程序 Dsfasdf Dsfasdf 就像哇哇哇哇好的他说嗨aasdfa wsdfalsdjf go-to go-to asdfasdf我正在努力的部分是将在行之间拆分的单词匹配为一个单词。
即。
去- 至
【问题讨论】:
-
所以你想匹配带有和不带有连字符的单词?但不是标点符号或数字?您的测试用例的预期/期望结果也会很有用。
-
我不太清楚你所说的“连字符行间”是什么意思。