Регулярное выражение с + (плюс) и пробел - PullRequest
3 голосов
/ 01 октября 2011

У меня есть следующее предложение

"my hooorrrr sssee strongggg"

мое регулярное выражение:

"(h+o+r+s+e+) s+t+r+o+n+g+"

оно действительно / соответствует только тогда, когда предложение:

"my hooorrrrsssee strongggg"

любое теломожет помочь?

Я хочу сопоставить, независимо от пробела между словами.

example : "my h ooo rrr rss    se eee    stttro ngggg"

, а другая проблема заключается в том, что какой-то символ заменяется на число, как показано ниже:

"my h 0o0 rrr rs555sss    se ee333    stttr0 ngggg"

a replaced by 4
b replaced by 8
s replaced by 5
i replaced by 1
o replaced by 0

любое тело может помочь?

Спасибо

Ответы [ 4 ]

5 голосов
/ 01 октября 2011

Используйте * (пробел, звездочка), чтобы разрешить дополнительные пробелы.

(h[h ]*o[o ]*r[r ]*s[s ]*e[e ]*)s[s ]*t[t ]*r[r ]*o[o ]*n[n ]*g[g ]*

Вы также можете рассмотреть возможность сопоставления любого пробела с \s (который включает, например, табуляцию) вместо простопробел.

Чтобы разрешить цифры или буквы, используйте класс символов, такой как [0o].

(h[h ]*[o0][o0 ]*r[r ]*[s5][s5 ]*[e3][e3 ]*)[s5][s5 ]*t[t ]*r[r ]*[o0][o0 ]*n[n ]*g[g ]*
1 голос
/ 01 октября 2011

Это соответствует каждой букве, за которой следует ноль или более той же буквы или пробела

h[h ]*o[o ]*r[r ]*s[s ]*e[e ]*s[s ]*t[t ]*r[r ]*o[o ]*n[n ]*g[g ]*

С указанными вами числами ... (e = 3, o = 0, s = 5)

h[h ]*[o0][o 0]*r[r ]*[s5][s 5]*e[e 3]*[s5][s 5]*t[t ]*r[r ]*[o0][o 0]*n[n ]*g[g ]*
1 голос
/ 01 октября 2011

ОБНОВЛЕНО 2 :

На основании информации в вашем вопросе вы можете использовать (обновлено, чтобы отследить случаи, на которые указал Тим Пицкер!):

[h][h ]*[o0][o 0]*[r][r ]*[s][s 5]*[e3][e 3]*[s5][s 5]*[t][t ]*[r][r ]*[o0][o 0]*[n][n ]*[g][g ]*

Я только что понял, что это делает ответ таким же, как Марк Байерс, хотя!

1 голос
/ 01 октября 2011

Если вы хотите сопоставить пробел, вам нужно включить его в регулярное выражение.\s - это шаблон, который соответствует пробельным символам (это пробел, табуляция, символы новой строки).

r+ будет соответствовать одному или нескольким r символам, но НЕ будет искать пропуски.

r+\s* с соответствием одному или нескольким r символам, за которыми следуют ноль или более пробельных символов.

Вы можете построить остальную часть своего выражения оттуда.

...