2013-04-03 3 views
0

У меня своего рода noobish проблемы с или оператораRegex или оператор

Я хочу, чтобы искать

[a-zA-Z]+ 

Вслед за

\-[a-zA-Z]? 

или

\'[a-zA-Z]? 

По существу захватить любое слово, поэтому я могу уйти: пробелы, , \n, \n\r и т. Д. Я также понимаю, что \w было бы неплохо использовать, но я не хочу таких вещей, как 9-10, в результате я ищу чисто слова.

Я получаю, что (thing|thing2) является синтаксисом для или, но он просто захватывает все слово, затем как второе совпадение, последнюю часть сокращений и дефисных слов. Любая помощь очень ценится, спасибо.

+0

Так каков твой вопрос? Вы хотите захватить все слово? (также, ваше слово с переводом в переводе с запятой только фиксирует первую букву после дефиса?) –

+0

Я получил: ([a-zA-Z] + (?: \ -? [a-zA-Z] + | \ '? [A-Za-Z] *)) –

ответ

2

Вы можете использовать символьный класс для этого:

[a-zA-Z]+[-\'][a-zA-Z]+ 

Или, если вы действительно хотите использовать оператор or, вы можете просто использовать не захватив группу (?:):

[a-zA-Z]+(?:-|\')[a-zA-Z]+ 
Смежные вопросы