2017-05-21 64 views
-1

我想解析字符串中只使用正則表達式。該字符串包含çğıİöşü的土耳其字符。爲什麼Regex b元字符不匹配單詞末尾的土耳其字符?

我試過\b[\wçğıİöşü]+\b正則表達式模式,但它不能正常工作。

enter image description here

在上述圖象I期待圖案被完全匹配BehiçGüneş。但你只能看到BehiGüne。什麼是匹配BehiçGüneş的正確模式?

+0

你使用上面的什麼正則表達式引擎(它是否Regex101?),並具體是什麼_encoding_這是否引擎的使用? –

+0

是的你是對的。引擎是Regex101。我沒有足夠的關於發動機'Èncoding'的信息。抱歉。 –

+1

如果你真的需要使用正則表達式的風格,你可以使用負面的環視:['(?<![\wçğıİöşü])[\wçğıİöşü] +(?![\wçğıİöşü])](https:// regex101。 com/r/GoVhSr/1) – horcrux

回答

1

您得到的結果是因爲Regex101中的默認正則表達式模式是PCRE(PHP),支持關閉unicode字符。如果你改變風格到Python(q.v.演示如下),你會看到你期望的行爲。

只需打開對unicode或UTF-8的支持,應解決問題。

Demo

+0

我不是針對任何平臺,只是試圖學習Regex詳細和提高自己。如果我有一個項目,我會在.NET C#上開發它:)謝謝你的幫助。 –

+1

@AliTor .NET和Java(據我所知)都支持使用Unicode字符串來定位你的土耳其字符(例如'\ U00E7'代替'ç')。你可以在稍後考慮這個選項。 –

+1

[PCRE選項支持任何字母,只需使用正確的選項](https://regex101.com/r/skmiLz/1)。 –