Как мне создать функцию, которая соответствует регулярному выражению с круглыми скобками - PullRequest
1 голос
/ 14 октября 2019

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

Обычно строки выглядят следующим образом: "Irene Milvoci (M)", "Andreas Kjapi (E) "и так далее.

Я пытаюсь найти регулярное выражение, которое поймает все мои слова, а также поймать" (E) ".

Дело в том, что я простоя не хочу поймать, что внутри скобок, я тоже хочу скобки.

Из того, что я пробовал, это регулярное выражение поймает все совпадения, которые я хочу: ([A-Z]\w+)|(\([^]+\)). Но я, кажется, схожу с ума, когда наткнулся на свою струну: «Ирен Мильвоци (М)».

Я написал это неправильно? Я чувствую, что это может быть "|"в регулярном выражении.

Допустим, у меня есть контакт из базы данных "Мартина Ховер (М)". Я хотел бы получить текущий вывод:

  1. Мартин
  2. Наведение
  3. (M)

Окончательный результат для меня заключается в том, чтоЯ хочу создать HTML-элемент, который я верну в свое представление, чтобы выделить области, соответствующие моему поисковому запросу. Поэтому я постараюсь добавить <em>{firstname}</em><em>{lastname}</em><em>{(M)}</em>.

1 Ответ

0 голосов
/ 15 октября 2019

Как насчет:

([A-Z]\w+)(?:\s+([A-Z]\w+)(?:\s+(\(\w\)))?)?

Применимо к Martine Hover (M)

  • группа 1 содержит Martine
  • группа 2 содержит Hover
  • группа 3 содержит (M)

Демонстрация и объяснение

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