2012-04-06 85 views
1

我需要關於正則表達式的幫助。瑞典文字符的模式匹配

我不得不這樣匹配字符串: âãa34dc

模式,我已經使用:

\ S * [A-ZA-Z] + [A-ZA-Z_0-9] * \ s

但這種模式不足以識別這種類型的字符串eg ãa34dc

P.S. â這些是瑞典人的性格。

請幫我找出這種字符串的正確模式。

+0

一個較小的更正,這可能不會改變現有答案的有效性:「â」和「ã」不用於瑞典語,除了拼寫外國名稱或地方。 OP想要的可能是「åäö/ÅÄÖ」。 – allansson 2017-05-09 16:21:10

回答

0

請給出一套規則。根據你的問題

[X-Ya-zA-Z]{3}[0-9]{2}[a-zA-Z]{2} 

x替換第一的瑞典字母

更換Y中的最後一個瑞典信

+0

規則與英文字母相同。名稱可能以瑞典字符開頭或可能以英文字母開頭。所以我希望patter符合我上面寫的所有條件。感謝您的時間,並感謝您提出不明確的問題。 – user1213444 2012-04-06 18:41:04

0

John Machin提供了一個很好的答案。調整他的模式,你需要的東西可能類似於:\s*[^\W\d_]\w*\s*

P.S.我從第一部分刪除了+量詞。隨後的任何字母都將與隨後量化的\w相匹配。

+0

規則與英文字母相同。名稱可以以瑞典字符開頭,也可以以英文字母開頭,也可以包含數字和下劃線。所以我希望patter符合我上面寫的所有條件。你的回答根本無助於我解決我的問題。 – user1213444 2012-04-06 19:10:12

+1

不,'\ w'與'[A-Za-z0-9_]'不一樣。在支持Unicode的環境(如.NET)中,\ w將匹配任何字母表(包括瑞典語)的任何字母。你真的打擾了我的模式嗎? – Douglas 2012-04-06 19:54:40

3

你確實想限制它爲瑞典字符嗎?換句話說,如果德國人不符合?如果是這樣,那麼你可能必須枚舉整個字母表,幷包括它。

如果您真正想要匹配每個字母字符,請使用正則表達式來匹配所有字母。

\w匹配任何字符,但包括數字&某些標點符號。這很接近,但不是你想要的第二屆任期。

對於第一學期,如果您不想包含數字,請指定該字符應該是一個Unicode'字母'類。 \p{L}指定了一個字母的所有Unicode字符。這包括[A-ZA-Z],所有的瑞典字符,德語和俄語等

因此,我認爲這正則表達式是你想要什麼:

\s*[\p{L}][\p{L}_0-9]*\s

如果你想包括digits from other character sets和一些other punctuation,那麼你可以在第二學期使用[\w]*