繁体   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