регулярное выражение выбирает после и в скобках, но исключает их из захваченной группы - PullRequest
0 голосов
/ 13 марта 2019

Это мое регулярное выражение: ((.+?(?=[(]))([(].+?[)])) и шаблон строки: "string(100)". из этого я захватил 3 группы. первый "string(100)" 2-й, "string" и третий "(100)". Но я хочу исключить скобки из третьей группы, поэтому у меня есть только "100". Я видел все другие подобные посты, но не смог адаптировать их к моей проблеме.

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

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 13 марта 2019

Ваше выражение, вероятно, намного сложнее, чем должно быть. Этот минималистичный RegEx может решить вашу проблему:

(.*)\((.*)\)

Соответствует всему, что имеет пару скобок. Целое совпадение обычно можно использовать в качестве группы захвата на всех языках / платформах. Две явные группы захвата находятся вокруг всего перед скобками и всего внутри. (Под «Все» я подразумеваю все символы, кроме символов новой строки.)

Вот интерактивное подробное объяснение и несколько примеров: https://regex101.com/r/OgshEn/1

0 голосов
/ 13 марта 2019

Это регулярное выражение '/ (\ w +) ((\ d +)) /' достигает желаемого результата. Пожалуйста, обратитесь к следующему результату JavaScript.

let matches = "string(100)".match(/(\w+)\((\d+)\)/);
console.log(matches[0]);
console.log(matches[1]);
console.log(matches[2]);
0 голосов
/ 13 марта 2019

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

Это один из способов ее решения:

((.+?(?=[(]))\((.+?)\))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...