正则表达式找到至少一个西里尔字符

Regex to find at least one cyrillic character

我想在一个字符串中找到一个或多个西里尔字母 (а-я)。到目前为止,我设法找到了除字符串开头以外的任何字符。

我正在使用的表达方式 -> ^[\p{L}\d\s\-](.*[а-яА-Я].*)+$

  1. 还行 -> loremфффф
  2. 还行 -> ipsuфmл
  3. 好的 -> ffffл
  4. 还行 -> фgfфdфg
  5. ок -> ллorem
  6. 失败 -> лorem(因为第一个字母是西里尔字母,而且是唯一的)

https://regex101.com/

您可以使用

^\P{Cyrillic}*\p{Cyrillic}.*

参见regex demo

如果您只想处理俄语字符,可以将 \p{Cyrillic} 替换为 [а-яёА-ЯЁ],将 \P{Cyrillic} 替换为 [^а-яёА-ЯЁ]

详情:

  • ^ - 字符串开头
  • \P{Cyrillic}* - 零个或多个西里尔字母以外的字符
  • \p{Cyrillic} - 西里尔字符
  • .* - 零个或多个除换行字符外的字符尽可能多。

要匹配多行字符串,请在开头添加 (?s),或将 . 替换为 [\w\W] 解决方法结构。