Mis*_* R2 14 java regex string
所以我对正则表达式完全不熟悉,我正在尝试使用Java java.util.regex
来查找输入字符串中的标点符号.我不知道我可能提前得到什么样的标点符号,除了(1)!,?,.,...都是有效的puncutation,(2)"<"和">"表示特殊的东西,并且不算作标点符号.程序本身伪随机地构建短语,我想在句子经过随机过程之前去掉句子末尾的标点符号.
我可以将整个单词与任何标点符号匹配,但匹配器只是为我提供了该单词的索引.换一种说法:
Pattern p = Pattern.compile("(.*\\!)*?");
Matcher m = p.matcher([some input string]);
Run Code Online (Sandbox Code Playgroud)
会抓住最后一个字"!"
.例如:
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());
Run Code Online (Sandbox Code Playgroud)
结果 - >字符串匹配〜"天!"
但是我想要Matcher
索引"!"
,所以我可以把它分开.
我可以制作案例,并使用String.substring(...)
我可能得到的每种标点符号,但我希望我使用正则表达式来做这件事有些错误.
Edg*_*ase 29
Java确实以环形方式支持POSIX字符类.对于标点符号,[:punct:]的Java等价物是\ p {Punct}.
有关详细信息,请参阅以下链接.
这是一个使用注释中的表达式的具体工作示例
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexFindPunctuation {
public static void main(String[] args) {
Pattern p = Pattern.compile("\\p{Punct}");
Matcher m = p.matcher("One day! when I was walking. I found your pants? just kidding...");
int count = 0;
while (m.find()) {
count++;
System.out.println("\nMatch number: " + count);
System.out.println("start() : " + m.start());
System.out.println("end() : " + m.end());
System.out.println("group() : " + m.group());
}
}
}
Run Code Online (Sandbox Code Playgroud)
我会尝试类似的字符类正则表达式
"[.!?\\-]"
Run Code Online (Sandbox Code Playgroud)
在[]
s中添加您想要匹配的任何字符.小心转义任何可能对正则表达式解析器有特殊含义的字符.
然后,您必须使用迭代迭代匹配,Matcher.find()
直到它返回false.
归档时间: |
|
查看次数: |
53043 次 |
最近记录: |