Регулярное выражение для получения имени из круглых скобок без пробелов

Я пытаюсь заключить имя файла в две круглые скобки, которые могут содержать пробелы между именем и любыми скобками. пример: ( имя файла )

Я использовал регулярное выражение:

(([A-Za-z_][A-Za-z0-9_]*)[ \t]*)

Проблема в том, что он сопоставляет имя_файла с пробелами до и после него. Я хочу сопоставить имя_файла без пробелов. Любая помощь приветствуется.

Просто используйте \b[A-Za-z_]\w*\b для сопоставления целых слов, которые состоят только из символов слов.

Wiktor Stribiżew 31.10.2018 13:53
0
1
67
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы могли бы использовать

\(\s*(\S+)\s*\)

и возьмем первую группу, см. демо на regex101.com.


Explained:
\(    # match ( literally
\s*   # zero or more whitespaces
(\S+) # capture anything not a whitespace, at least one character
\s*.  # same as above
\)    # match ) literally

Спасибо, Ян, за ответ, но он не работает; это просто дает мне "S"

mnabil 31.10.2018 13:57
Ответ принят как подходящий

Просто добавьте \ s * за скобки захвата. (также вам нужно избежать внешней круглой скобки, если вы хотите сопоставить литеральную скобку):

\(\s*([A-Za-z_][A-Za-z0-9_]*)\s*\)

Спасибо Эйно за ответ. Это не работает с экранированием скобок. Не избегая скобок, он дает мне имя_файла с пробелами перед ним и без пробелов после него. Теперь нам нужно удалить перед ним пробелы.

mnabil 31.10.2018 13:58

Можете ли вы дать нам пример точной строки, которую вы хотите сопоставить (есть ли там круглые скобки)? Я понял, что это "(имя_файла)", и вы хотите сопоставить имя_файла

Eino Gourdin 31.10.2018 14:22

Я пишу парсер, который читает файл с помощью Lex. Когда он находит "include (имя_файла)", он извлекает имя_файла и открывает его, чтобы продолжить чтение. Функция "fopen" выдает ошибку, если имя файла содержит пробелы до или после. Таким образом, я хочу извлечь имя файла без пробелов до или после.

mnabil 31.10.2018 14:29

Тогда должно работать примерно так: include\s*\(\s*([A-Za-z_][\w\.]*)\s*\). Cf пример на regex101

Eino Gourdin 31.10.2018 15:00

Другие вопросы по теме