Какое регулярное выражение соответствует словам, содержащим все гласные?

Вы можете использовать paste0:

matrix(paste0(df_one$V1, rep(df_one$V2, each = loop)), nrow = loop)

     [,1] [,2] [,3] [,4] [,5]
[1,] "15" "16" "17" "18" "19"
[2,] "25" "26" "27" "28" "29"
[3,] "35" "36" "37" "38" "39"
[4,] "45" "46" "47" "48" "49"
[5,] "55" "56" "57" "58" "59"
2
задан Gsbansal10 19 January 2019 в 12:29
поделиться

1 ответ

Если вы планируете сопоставлять слова как куски текста, состоящие только из английских букв, вы можете использовать регулярное выражение, например

\b(?=\w*?a)(?=\w*?e)(?=\w*?i)(?=\w*?o)(?=\w*?u)[a-zA-Z]+\b

. См. Демонстрацию regex

. поддержка языков, кроме английского, вы можете заменить [a-zA-Z]+ на [^\W\d_]+.

Если «слово», которое вы хотите сопоставить, представляет собой кусок непробельных символов, вы можете использовать

(?<!\S)(?=\S*?a)(?=\S*?e)(?=\S*?i)(?=\S*?o)(?=\S*?u)\S+

См. эту демонстрационную версию регулярного выражения .

Определите эти шаблоны в Python, используя необработанные строковые литералы, например:

rx_AllVowelWords = r'\b(?=\w*?a)(?=\w*?e)(?=\w*?i)(?=\w*?o)(?=\w*?u)[a-zA-Z]+\b'

Подробности

  • \b(?=\w*?a)(?=\w*?e)(?=\w*?i)(?=\w*?o)(?=\w*?u)[a-zA-Z]+\b:
    • \b - граница слова, здесь начальная граница слова.
    • (?=\w*?a)(?=\w*?e)(?=\w*?i)(?=\w*?o)(?=\w*?u) - последовательность положительных указаний, которые запускаются сразу после обнаружения положения границы слова и требуют наличия a, e, i, o и u после любых символов 0+ слов (букв, цифр, подчеркиваний - вы можете заменить \w*? на [^\W\d_]*?, чтобы проверять только буквы)
    • [ 1115] - 1 или более букв ASCII (заменить на [^\W\d_]+, чтобы соответствовать всем буквам)
    • \b - граница слова, здесь, конечная граница слова
  • [1142 ]

    Детали второго шаблона:

    • (?<!\S)(?=\S*?a)(?=\S*?e)(?=\S*?i)(?=\S*?o)(?=\S*?u)\S+:
      • (?<!\S) - позиция в начале строки или после пробела
      • (?=\S*?a)(?=\S*?e)(?=\S*?i)(?=\S*?o)(?=\S*?u) - все английские гласные должны присутствовать - в любом порядке - после любых 0+ символов кроме пробела
      • \S+ - 1+ непробельных символов.
0
ответ дан Wiktor Stribiżew 19 January 2019 в 12:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: