2017-02-06 7 views
2

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

/\(([^()]+)\)/g 

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

(28%) - не выбрано

(А = 28%) - выбирается возможно

ли это?

+4

Ну, почти получилось - просто использовать '*' квантор с инвертированным класса символов, добавьте '=' и добавить еще один экземпляр '[^()] *'. Затем вы можете подумать об увеличении его, добавив '=' в первый класс отрицательных символов. –

ответ

2

Это возможно Look-Head утверждение, которое работает как if в языке программирования

\(.*(?==).*?\)


Взгляд is (?=) и вы можете вставить то, что хотите после =. Это часть регулярного выражения, а не обычный знак равенства. Поэтому вам нужен (?==). Вот и все.

demo

+2

очень элегантное решение – haz

2

Чтобы добавить комментарий Wiktor и ответ гАг, в * будет соответствовать подобным случаям также: (=28%), (A=), которые вы не могли бы желать. Вы можете использовать +, чтобы убедиться, что есть символы с обеих сторон от =.

\([^(]+=[^)]+\) 

Демо: https://regex101.com/r/0lmEcb/2

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

  • Нет связанных вопросов^_^