【发布时间】:2012-07-27 03:41:19
【问题描述】:
所以我对正则表达式完全陌生,我正在尝试使用Java 的java.util.regex 在输入字符串中查找标点符号。我不知道我可能会提前得到什么样的标点符号,除了 (1) !, ?, ., ... 都是有效的标点符号,并且 (2) "" 意味着一些特殊的东西,并且不要算作标点符号。
程序本身会伪随机地构建短语,我想在它通过随机过程之前去掉句尾的标点符号。
我可以用任何标点符号匹配整个单词,但匹配器只给我那个单词的索引。换句话说:
Pattern p = Pattern.compile("(.*\\!)*?");
Matcher m = p.matcher([some input string]);
将抓取任何末尾带有"!" 的单词。例如:
String inputString = "It is a warm Summer day!";
Pattern p = Pattern.compile("(.*\\!)*?");
Matcher m = p.matcher(inputString);
String match = inputString.substring(m.start(), m.end());
结果 --> 字符串匹配 ~ "day!"
但我希望 Matcher 仅索引 "!",所以我可以将其拆分。
我可能会提出案例,并为我可能得到的每种标点符号使用String.substring(...),但我希望我在使用正则表达式时会出现一些错误。
【问题讨论】:
-
哦!天哪,我什至没有注意到这一点。不,这根本不是故意的——谢谢你提出来!