是否有任何正则表达式模式可以更改此字符串
这是üößñ和英语的混合字符串。 üößñüößñ是Unicode字。
到此?
这是一个混合字符串,üößñ和英语。,üößñüößñ,是Unicode字。
实际上,我想用逗号分隔英语单词和非英语单词。
感谢。
答案 0 :(得分:1)
没有正则表达式可以检测特定语言中的字符串,但您可以通过使用unicode文字(例如
)来匹配一系列代码点中的字符(或不匹配)/[\u0900-\u097F]+/
匹配一系列天城文字符。
请记住,许多语言都可以使用脚本(字符集合)。
答案 1 :(得分:1)
当然,您可以使用\ 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字符。
我相信另一个正则表达式精明的人可以进一步优化,但这是我能想到的最好的一半清醒:)
答案 2 :(得分:1)
的javascript
/((?:\ [^ \ w \ d] +)+)/ g
'这是üößñ和英语的混合字符串。 üößñüößñ是Unicode字。'。replace(/((?:\ [^ \ w \ d] +)+)/ g,',$ 1,')
这是一个混合字符串,üößñ和英语。,üößñüößñ,是Unicode字。
标记
答案 3 :(得分:1)
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 different language个脚本。以上只是检测不在ASCII范围内的任何unicode。