我想在字符串中查找一个或多个西里尔字母 (а-я)。到目前为止,我设法找到除了字符串开头之外的任何位置的字符。
我正在使用的表达式 -> ^[\p{L}\d\s\-](.*[а-яА-Я].*)+$
- 好的 -> loremфффф ф
- 好的 -> ipsuфmл
- 好的 -> ffffл
- 好的 -> фgfфdфg
- ок -> ллlorem
- fail -> лlorem(因为第一个字母是西里尔字母,而且是唯一的一个)
最佳答案
你可以使用
^\P{Cyrillic}*\p{Cyrillic}.*
请参阅regex demo .
如果您只想处理俄语字符,可以将 \p{Cyrillic}
替换为 [а-яёА-ЯЁ]
和 \P{西里尔文}
与 [^а-яёА-ЯЁ]
。
详细信息:
^
- 字符串开头\P{西里尔文}*
- 零个或多个除西里尔文以外的字符\p{西里尔文}
- 西里尔文字符.*
- 除换行符之外的尽可能多的零个或多个字符。
要匹配多行字符串,请在开头添加 (?s)
,或将 .
替换为 [\w\W]
解决方法构造。
关于正则表达式查找至少一个西里尔字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71114405/