簡體   English   中英

正則表達式:用逗號分割英語和非英語單詞?

[英]Regular Expression: Split English and Non-English words with Comma?

是否有任何正則表達式模式來更改此字符串

這是üößñ和英語的混合串。 üößñüößñ是Unicode單詞。

這個?

這是一個混合字符串,üößñ和英語。,üößñüößñ,是Unicode字。

實際上,我想用逗號分割英語單詞和非英語單詞。

謝謝。

沒有正則表達式可以檢測特定語言中的字符串,但您可以通過使用unicode文字來確定匹配(或不在)一系列代碼點中的字符,例如

/[\u0900-\u097F]+/

它匹配一系列梵文字符。

請記住,許多語言都可以使用腳本(字符集合)。

當然,您可以使用\\ x來過濾特定的ASCII代碼范圍

例如(在JavaScript中):

var x = "This is a mix string of üößñ and English. üößñ üößñ are Unicode characters.";
x.replace(/([^\x00-\x80]+\s)+/g, function(match) { return match.slice(0,-1)+", "; } ); // matches characters outside the 0-128 ASCII range

輸出:

這是üößñ和英語的混合字符串。 üößñüößñ是Unicode字符。

我相信另一個正則表達式精明的人可以進一步優化,但這是我能想到的最好的一半清醒:)

JavaScript的

/((?:\\ [^ \\ w \\ d] +)+)/ g

'這是üößñ和英語的混合串。 üößñüößñ是Unicode字。'。replace(/((?:\\ [^ \\ w \\ d] +)+)/ g,',$ 1,')

這是一個混合字符串,üößñ和英語。,üößñüößñ,是Unicode字。

標記

    String s = "This is a mix string of üößñ and English. üößñ üößñ are Unicode words.";
    System.out.println(s.replaceAll("((?: ?[\\p{L}&&[^A-Za-z]]+)+)", ",$1,"));

Unicode腳本定義了大約45種不同的語言腳本。 以上只是檢測不在ASCII范圍內的任何unicode。

暫無
暫無

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

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