2013-03-19 3 views
2

Как я могу сопоставить что-то вроде {anyWord}, но исключить все, что имеет подчеркивание в начале, вот так: {_doNotMatchThis}?Regex как совместить слово без символа в нем

Вход:

hi there {matchPlease}{andThis}, just doing some regex {_notThis} 

Нужные матчи:

{matchPlease} 
{andThis} 

Без этого условия за исключением стартового {_, я знаю, что это регулярное выражение шаблон хорошо работает: \{\w+\}

Я пробовал чтобы изменить это значение, \{!_\w+\}, в основном говоря, «соответствует всем, что начинается с {, t курица имеет слово, которое делает не начинается с _, затем заканчивается на } ". Благодарю.

+0

попробовать это: '/ \ {[^ _] \ ш + \}/G' – Shmiddty

ответ

5

Как насчет этого?

/\{([^_].*?)\}/ 

И за @Geo и @nhahtdh в комментариях, если вы хотите только слова:

/\{([^_]\w*)\}/ 
+0

Это исключит первый символ '{matchPlease}' и '{andThis}', поймав только 'atchPlease' и' ndThis' – MurifoX

+0

, что делает трюк! –

+0

, чтобы соответствовать только словам *, это может быть '/ \ {[^ _] (\ w +) \} /' – Geo

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