Javascript 乌克兰字母的正则表达式。如何用大写字母分隔西里尔字母?
我有一根字符串,里面有一些西里尔文字。每个都以大写字母开头Javascript 乌克兰字母的正则表达式。如何用大写字母分隔西里尔字母?,javascript,regex,string,Javascript,Regex,String,我有一根字符串,里面有一些西里尔文字。每个都以大写字母开头 var str = 'ХєлпМіПліз'; 我找到了这个解决方案str.match(/[А-Я][а-а]+/g) 但它返回的是[“ППП”]而不是[“ПєПП”,“Мі”,“Піз”]。似乎它不识别乌克兰字母('і','є'),只识别俄语 那么,我必须如何更改正则表达式以包含乌克兰字母呢?解决这个问题的方法是查看以确定所需的字符范围。例如,如果我使用以下模式: str.match(/[А-Я][а-яєі]+/g) 它适用于示
var str = 'ХєлпМіПліз';
我找到了这个解决方案str.match(/[А-Я][а-а]+/g)
但它返回的是[“ППП”]
而不是[“ПєПП”,“Мі”,“Піз”]
。似乎它不识别乌克兰字母('і','є'),只识别俄语
那么,我必须如何更改正则表达式以包含乌克兰字母呢?解决这个问题的方法是查看以确定所需的字符范围。例如,如果我使用以下模式:
str.match(/[А-Я][а-яєі]+/g)
它适用于示例字符串。(对不起,我不知道乌克兰字母)使用
\p{Lu}
匹配大写字母,\p{Ll}
匹配小写字母,或者使用\p{L}
匹配任何字母
更新:
这只适用于Java,不适用于JavaScript。
别忘了在你的regexp中包括“apostrof”、“ji”
[А-Я][а-Я]
实际上不包括乌克兰字母
“є”是\u044f
,“є”是\u0454
,“i”是\u0456
(\u044
表示欧元)。您应该手动将它们包含在正则表达式中:
/[А-ЯЯI][а-єI]+/g
乌克兰字母表有四个不同于西里尔字母表的单词,例如:[і,є,ї,ґ],也可以包含一个单引号
"ґуля, з'їсти, істота, Європа".match(/[а-яієїґ\']+/ig)
i
,并将匹配大写字母,如“ццца”[А-Я]
不是西里尔字母,它只是俄语
西里尔文是一种书写系统。它用在许多语言的字母表中。
(如拉丁语:西欧语言的字符集、东欧语言和c语言的字符集)
要同时使用俄语和乌克兰语,您将获得[А-ЯҐЇ]
添加白俄罗斯语:[А-ЯҐЇЎ]
对于所有西里尔文字符(包括巴尔卡尼亚语言和古西里尔文),您可以通过Unicode子集类获得它,如:\p{iscrylic}
要单独处理乌克兰问题:
或[А-ЩгггггЯ-аєїї]
似乎是完整的乌克兰字母表,每种情况下有33个字母
撇号不是字母,但偶尔也包括在字母表中,因为它对下一个元音有影响。
撇号是单词的一部分,而不是分隔符。它可以通过以下几种方式显示:
27 "'" APOSTROPHE
60 "`" GRAVE ACCENT
2019 "’" RIGHT SINGLE QUOTATION MARK
2bc "ʼ" MODIFIER LETTER APOSTROPHE
27“'”撇号
60“`”重口音
2019“'”右单引号
2bc“的”修饰语字母撇号
也许还有更多
是的,撇号有点复杂。它没有通用的标准。适用于乌克兰字母“i”和其他字母
python
r's/[^а-яА-Я.!?]/./g+'
只有乌克兰语,没有俄语
[бвгґджзклмнпрстфхцчшщйаеєиіїоуюяь]/gi
@H2OOOOO:不;他只需要更改正则表达式以包含他想要的字符。这是个好主意,但是javascript没有这些字符类。oops。很抱歉没有提到是js。这适用于Java,甚至我的解决方案也不包括乌克兰语的“apostrof”,谢谢你的回答。字母可能是正确的,但它们不符合其他要求(大写字母后跟小写字母)。因此,我建议更新您的答案,以包括其他要求以及。