我有一个字符串,里面有一些西里尔字母,每个都以大写字母开头。
var str = 'ХєлпМіПліз';
我找到了这个解str.match(/[А-Я][а-я]+/g)。但是它返回的是["Пл"]而不是["Хєлп", "Мі", "Пліз"],看起来它不识别乌克兰字母(“","”),只识别俄语。那么,我该如何修改正则表达式以包含乌克兰字母呢?
str.match(/[А-Я][а-я]+/g)
["Пл"]
["Хєлп", "Мі", "Пліз"]
x4shl7ld1#
[А-Я]不是西里尔字母,它只是俄语!西里尔文是一种书写系统。它用于许多语言的字母表中。(如拉丁文:西欧语言、东欧等的字符集)如果同时有俄语和乌克兰语,你会得到[А-ЯҐЄІЇ]。添加白俄罗斯语:[А-ЯҐЄІЇЎ]对于所有西里尔字符(包括巴尔干半岛语言和古西里尔),您可以通过Unicode子集类获取它,如:\p{IsCyrillic}要单独处理乌克兰语:[А-ЩЬЮЯҐЄІЇ]或[А-ЩЬЮЯҐЄІЇа-щьюяґєії]似乎是每种情况下33个字母的完整乌克兰字母表。撇号不是字母,但偶尔会包含在字母表中,因为它对下一个元音有影响。撇号是单词的一部分,不是分隔符。它可能有几种显示方式:
[А-Я]
[А-ЯҐЄІЇ]
[А-ЯҐЄІЇЎ]
\p{IsCyrillic}
[А-ЩЬЮЯҐЄІЇ]
[А-ЩЬЮЯҐЄІЇа-щьюяґєії]
27 "'" APOSTROPHE 60 "`" GRAVE ACCENT 2019 "’" RIGHT SINGLE QUOTATION MARK 2bc "ʼ" MODIFIER LETTER APOSTROPHE
也许还有更多。是的,撇号有点复杂,没有统一的标准。
jbose2ul2#
使用\p{Lu}匹配大写字母,使用\p{Ll}匹配小写字母,或使用\p{L}匹配任何字母
\p{Lu}
\p{Ll}
\p{L}
rm5edbpk3#
乌克兰字母表有四个不同于西里尔字母表的单词,如:[,,,],也可以包含单引号
"ґуля, з'їсти, істота, Європа".match(/[а-яієїґ\']+/ig)
i通过and将匹配大写字母,如“вропа”
i
uurv41yg4#
解决这个问题的方法是查看unicode table来确定您需要的字符范围。例如,如果我使用以下模式:
str.match(/[А-Я][а-яєі]+/g)
它的作品与你的示例字符串.(对不起我不知道乌克兰字母)
7uzetpgm5#
[А-Я][а-я]确实不包含乌克兰字母。而'я'是\u044f,''是\u0454,'i'是\u0456(是\u0404)。您应该手动将它们包含在正则表达式中:/[А-ЯЄI][а-яєi]+/g
[А-Я][а-я]
\u044f
\u0454
\u0456
\u0404
/[А-ЯЄI][а-яєi]+/g
lawou6xi6#
可以使用乌克兰字母“i”和其他字母
python r's/[^а-яА-Я.!?]/./g+'
6fe3ivhb7#
只有乌克兰语,没有俄语
[бвгґджзклмнпрстфхцчшщйаеєиіїоуюяь]/gi
eufgjt7s8#
试试下面的模式:
^[А-ЩЬЮЯҐЄІЇ][а-щьюяґєії']*$
8条答案
按热度按时间x4shl7ld1#
[А-Я]
不是西里尔字母,它只是俄语!西里尔文是一种书写系统。它用于许多语言的字母表中。(如拉丁文:西欧语言、东欧等的字符集)
如果同时有俄语和乌克兰语,你会得到
[А-ЯҐЄІЇ]
。添加白俄罗斯语:
[А-ЯҐЄІЇЎ]
对于所有西里尔字符(包括巴尔干半岛语言和古西里尔),您可以通过Unicode子集类获取它,如:
\p{IsCyrillic}
要单独处理乌克兰语:
[А-ЩЬЮЯҐЄІЇ]
或[А-ЩЬЮЯҐЄІЇа-щьюяґєії]
似乎是每种情况下33个字母的完整乌克兰字母表。撇号不是字母,但偶尔会包含在字母表中,因为它对下一个元音有影响。撇号是单词的一部分,不是分隔符。它可能有几种显示方式:
也许还有更多。
是的,撇号有点复杂,没有统一的标准。
jbose2ul2#
使用
\p{Lu}
匹配大写字母,使用\p{Ll}
匹配小写字母,或使用\p{L}
匹配任何字母rm5edbpk3#
乌克兰字母表有四个不同于西里尔字母表的单词,如:[,,,],也可以包含单引号
i
通过and将匹配大写字母,如“вропа”uurv41yg4#
解决这个问题的方法是查看unicode table来确定您需要的字符范围。例如,如果我使用以下模式:
它的作品与你的示例字符串.(对不起我不知道乌克兰字母)
7uzetpgm5#
[А-Я][а-я]
确实不包含乌克兰字母。而'я'是
\u044f
,''是\u0454
,'i'是\u0456
(是\u0404
)。您应该手动将它们包含在正则表达式中:/[А-ЯЄI][а-яєi]+/g
lawou6xi6#
可以使用乌克兰字母“i”和其他字母
6fe3ivhb7#
只有乌克兰语,没有俄语
eufgjt7s8#
试试下面的模式: