簡體   English   中英

正則表達式不會將空格字符與[\\ r \\ n \\ t \\ f \\ s]匹配

[英]Regex won't match whitespace character with [\r\n\t\f\s]

這可能是一個非常簡單的修復程序,但我無法弄清楚!

給定以下文本,我試圖連續匹配(最多)3個大寫單詞。

Russell Lake West 匹配項應包括所有3個單詞。

此正則表達式將匹配前兩個單詞,但不匹配第三個單詞( 此處為demo ):

(([AZ][az]+)\\s{0,2}([AZ][az]+)?\\s{0,2}([AZ][az]+)?)

這個正則表達式匹配所有3個單詞,但是我必須復制/粘貼LakeWest之間的空白才能使其正常工作( 此處演示 ):

(([AZ][a-z'-]+)\\s{0,2}([AZ][a-z'-]+)? \\s{0,2}([AZ][a-z'-]+)?)

                                       ^ pasted it here

所以我假設也許空白不會被當作空白,而是換行符或類似字符,所以我嘗試了這個( 這里是演示)

[\\r\\n\\t\\f\\s]West

但是它無法識別West之前的任何字符,因此不會返回任何結果。

為什么regex101或Java無法識別LakeWest之間的明顯空白? 解決這個問題的可靠方法是什么?

有許多種空間。 您在演示中使用的是不間斷的一個(在Unicode表中索引為160),它不屬於\\s (空格字符類),因為它不代表我們可以期望將文本拆分的位置分成單獨的部分,如線條。
BTW \\s已經代表: \\r \\n \\t \\f

要匹配它,您可以使用\\p{Zs}類。
您還可以將\\s\\p{Zs}類與[\\\\p{Zs}\\\\s]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM