Регулярное выражение для сопоставления * RandomName ($ variable1, $ variable2) - PullRequest
2 голосов
/ 06 июня 2019

Как мне сопоставить строку типа *RandomName($variable1, $variable2)


Некоторые ограничения:

  1. Совпадение должно начинаться с *
  2. Первый символ после * должен быть одним из 0-9, A-Z, a-z, _
  3. Допустимые символы: 0-9, A-Z, a-z, _, $
  4. Совпадение должно заканчиваться )
  5. Совпадение не должно быть одним словом.т. е. в матче допускаются пробелы
  6. В матче должна быть хотя бы одна ( и одна ) скобка.

Некоторые примеры строкдля согласования

  1. *RandomName($variable1, $variable2)
  2. *RandomName()
  3. *_RandomName($variable1)
  4. *123RandomName($variable1, $variable2, $variable3, $variable4)

Вот что я получил до сих пор (^|\s)\*([^;!@#*\[\]{}^|+=:<>"',.~\\&%$-]\S{2,200})\b

Вот ссылка для проверки: https://regex101.com/r/FxHz7n/1/

Ответы [ 2 ]

3 голосов
/ 06 июня 2019

Вы можете использовать

(?:^|\s)\*(\w[\w$]*)\(([^()]*)\)

См. Демоверсию регулярных выражений и график регулярных выражений :

enter image description here

Детали

  • (?:^|\s) - начало строки или пробела (может быть заменено на (?<!\S), если приняты взгляды)
  • \* - * char
  • (\w[\w$]*) - Группа 1: слово char и затем слово 0+ или $ char
  • \( - (
  • ([^()]*) - Группа 2: любые 0 или более символов, кроме ( и )
  • \) - ) char.
2 голосов
/ 06 июня 2019

Простое решение будет:

\*[A-z0-9_]+\([A-z0-9_$, ]*\)

или если вы делаете целую строку / точное соответствие:

^\*[A-z0-9_]+\([A-z0-9_$, ]*\)$

Если у вас есть следующая строка:

*RandomName($variabl)e1, $variable2)

Первое регулярное выражение будет соответствовать части *RandomName($variabl), второе не будет ничего соответствовать в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...