2014-01-13 3 views
0

Я ищу регулярное выражение, соответствующее началу определенных слов по всей строке. Скажем, у меня есть следующее:Регулярное выражение для сопоставления определенных слов в строке

Это пример строки текста.

я смотрел бы, чтобы соответствовать каждому T, который начинается слово:

T его является т он пример строки из т доб.

Любая помощь будет очень признательна.

+1

Что вы пробовали? –

+0

Есть ли что-то не так с string.Contains()? – Liath

+1

Подсказка: граница слова. – devnull

ответ

1

пытается в IRB (Ruby):

irb(main):001:0> "This is the example string of text.".scan(/\bt\w+/i) 
=> ["This", "the", "text"] 

для /\bt\w+/i, \b является границей, t является характер t, что вы хотите, чтобы начать с, и \w+ является буквенно-цифровой или подчеркивания, с 1 или более вхождений , Номер i игнорируется.

Если вы хотите только буквы и хотите, чтобы соответствовать только t, а также, то вы можете использовать

irb(main):002:0> "This is the example string of text.".scan(/\bt[a-z]*/i) 
=> ["This", "the", "text"] 

[a-z] означает класс символов из a в z. * означает 0 или более случаев.

+0

Я думаю, что это '/ \ bt [a-z] */i' именно то, что я ищу. Я также хотел бы найти любого символа внутри слова, так что это будет правильным исправлением для этого '/ \ bt. */I'? Я тестировал его, и, похоже, я даю то, что хочу. Благодарю. – CodeKwyjibo

1

Я считаю, что метасимвол \b ограничивает регулярное выражение «границами слов», то есть он позволит вам совместить «только целые слова». Используя \b в начале вашего регулярного выражения, вы можете сопоставить все, что хотите, до тех пор, пока оно запустит слово.

В вашем примере: \b[tT]

Точно так же, если бы вы хотите, чтобы соответствовать букве T в конце слов, вы просто поместите \ Ъ в конце регулярного выражения.

+0

Неужели это не соответствует '1' в' 1/3'? – CodeKwyjibo

+0

Когда я его протестировал, 1 в 1/3 матча отлично подходит, если вы используете \ b [1] – Konc

Смежные вопросы