[英]Java Regex for multiline text
我需要在Java中匹配一個字符串與正則表達式。 該字符串是多行的,因此包含多個\\n
,如下所示
String text = "abcde\n"
+ "fghij\n"
+ "klmno\n";
String regex = "\\S*";
System.out.println(text.matches(regex));
我只想匹配文本是否至少包含非空白字符。 輸出為false。 我也嘗試過\\\\S*(\\n)*
用於正則表達式,它也返回false。
在真實程序中,文本和正則表達式都不是硬編碼的。 要檢查的正確的正則表達式是多行字符串包含任何非空白字符?
問題與直線無關。 matches
匹配整個字符串,而不僅僅是它的一部分。
如果要檢查至少一個非空白字符,請使用:
"\\s*\\S[\\s\\S]*"
意思是
如果您只想檢查字符串中是否至少有一個非空格字符,您可以修剪文本並檢查大小而不涉及正則表達式。
String text = "abcde\n"
+ "fghij\n"
+ "klmno\n";
if (!text.trim().isEmpty()){
//your logic here
}
如果你真的想使用正則表達式,你可以使用如下的簡單正則表達式。
String text = "abcde\n"
+ "fghij\n"
+ "klmno\n";
String regex = ".*\\S+.*";
Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
Matcher matcher = pattern.matcher(string);
if (matcher.find()){
// your logic here
}
使用String.matches()
!text.matches("\\s*")
檢查輸入文本是否僅包含空格字符(包括換行符),將匹配結果反轉為!
使用Matcher.find()
Pattern regexp = Pattern.compile("\\S");
regexp.matcher(text).find()
將搜索第一個非空白字符,這將更有效,因為它將在第一個匹配時停止並且還使用預編譯模式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.