所以我对 正则表达式 完全陌生,我正在尝试使用 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(...)
来表示我可能得到的每一种标点符号,但我希望我在使用正则表达式来执行此操作时出现一些错误。
原文由 Mister R2 发布,翻译遵循 CC BY-SA 4.0 许可协议
我会尝试一个类似于
在
[]
中添加您希望匹配的任何字符。小心转义任何可能对正则表达式解析器具有特殊含义的字符。然后,您必须使用
Matcher.find()
遍历匹配项,直到返回 false。