2010-03-03 86 views
5

英語,當然是想都不用想的正則表達式,因爲這是它最初是在/發達:正則表達式可以使用不同的語言嗎?

正則表達式可以理解這種字符集?

法語進入一些重音字符,我不確定如何匹配 - 即è和e都被正則表達式視爲單詞字符?

Les expressionsrégulièrespeuvent comprendre ce jeu decaractères?

日語不包含我所知道的正則表達式字符匹配。

正規表現は,この文字を理解でき,設定?

+0

我認爲這也可能在很大程度上依賴於正則表達式引擎運行的平臺,你有沒有想過? – Lazarus 2010-03-03 13:56:24

+0

「正則表達式」或「正則表達式」是爲您可能想稱爲字母表的任何符號集合定義的概念。在實踐中,有很多正則表達式引擎(我見過的所有這些引擎都添加了其他功能),其中一些假定可以很好地處理一些味道的Unicode,其中一些可能不會。簡而言之,這是一個依賴於平臺的問題,爲了獲得有用的回覆,您需要告訴我們您正在討論的是哪種正則表達式引擎。 – 2010-03-03 15:20:30

回答

6

簡短回答:

更具體地說,它取決於支持unicode匹配的正則表達式引擎(如描述here)。

這樣的比賽可以極大地複雜化你的正則表達式,所以我建議你閱讀this的Unicode正則表達式的教程(也注意到,Unicode的實現本身可以是挺亂的,所以你也可以從閱讀喬爾斯波斯基的article有關字符的內部運作中獲益套)。

+2

請注意,Unicode不是一團糟。以前所有的嘗試都是讓整個事情變得混亂。 – 2010-03-03 14:03:21

+1

按照定義在那篇文章中,Unicode不能是一團糟:實現可以是。 – Tom 2010-03-03 14:05:42

1

據我所知,目前還沒有,你可以使用任何特定的模式,即[A-ZA-Z]匹配「è」,但你總是可以單獨匹配它們,即[a-zA-Zè正]

很明顯,這可以使你的正則表達式巨大,但你總是可以通過將你的字符串添加到變量中來控制它,將變量放入表達式中。

0

它不是關於正則表達式,而是關於執行它的框架。 java和.net我認爲在處理unicode方面非常好。所以「è和e都是通過正則表達式來考慮單詞字符」是真實的。

0

這取決於實現和字符集。一般來說,答案是「是」,但可能需要額外的設置。

例如,在Perl中,像\ w這樣的東西的含義被選定的語言環境(使用語言環境)所改變。

1

一般來說,正則表達式更適用於機器可讀文本而非人類可讀文本。正則表達式在很多方面都是對整個XML的更一般的回答;正則表達式本質上無法正確解析人類語言,因爲語言比解析它更復雜。

如果你想打破人類語言(包括英語),你會希望使用語言分析工具,甚至是AI,而不僅僅是正則表達式。

0

This SO thread may help。它包括您可以在正則表達式中使用的Unicode character classes(例如,無論語言如何,[Ll]都是小寫字母)。

+0

在正則表達式中使用什麼引擎? Perl的?促進? Java的? – 2010-03-03 15:26:31

+0

6.2L V8。那裏還有什麼? – Tom 2010-03-03 16:06:32

0

/[\p{Latin}]/應該例如包含拉丁字母。你可以得到完整的解釋和參考here

+0

這是一個有用的網站,但它專注於Perl和類似的正則表達式引擎。它不是普遍的。 – 2010-03-03 15:25:10

+0

嗯,是的,我不確定提問者使用什麼引擎,但也許它很有用? Perl RegEx引擎被廣泛使用 – casraf 2010-03-03 15:40:18

相關問題