我正在尝试编写一个正则表达式模式,该模式将匹配以多个或一个制表符和/或空格开头的任何句子。 例如,我希望我的正则表达式模式能够匹配“你好我喜欢正则表达式!” 但所以我在“你好”之后如何匹配单词。到目前为止,我有这个:
String REGEX = "(?s)(\\p{Blank}+)([a-z][ ])*";
Pattern PATTERN = Pattern.compile(REGEX);
Matcher m = PATTERN.matcher(" asdsada adf adfah.");
if (m.matches()) {
System.out.println("hurray!");
}
任何帮助将不胜感激。感谢。
答案 0 :(得分:18)
String regex = "^\\s+[A-Za-z,;'\"\\s]+[.?!]$"
^
表示“以”开头“
\\s
表示空格
+
表示1个或更多
[A-Za-z,;'"\\s]
表示任何字母,
,;
,'
,"
或空白字符
$
表示“以”结尾“
答案 1 :(得分:14)
根据定义匹配句子的示例正则表达式:“句子是一系列字符,从至少一个空格字符开始,以.
,!
或{{1}之一结尾“如下:
?
请注意,换行符也会包含在此匹配中。
答案 2 :(得分:2)
答案 3 :(得分:1)
根据您的要求和要求,以下内容将有效。
String s = " hello there I like regex!";
Pattern p = Pattern.compile("^\\s+[a-zA-Z\\s]+[.?!]$");
Matcher m = p.matcher(s);
if (m.matches()) {
System.out.println("hurray!");
}
请参阅working demo
答案 4 :(得分:1)
String regex = "(?<=^|(\.|!|\?) |\n|\t|\r|\r\n) *\(?[A-Z][^.!?]*((\.|!|\?)(?! |\n|\r|\r\n)[^.!?]*)*(\.|!|\?)(?= |\n|\r|\r\n)"
与定义“以大写字母开头并以点结尾的句子”之后的所有句子匹配。
答案 5 :(得分:1)
一个句子以词边界(因此是\b
)开始,并以一个或多个终止符结束。因此:
\b[^.!?]+[.!?]+
https://regex101.com/r/7DdyM1/1
这给出了非常准确的结果。但是,它不处理小数。例如。这句话会被解释成两句话:
The value of PI is 3.141...