Regex 正则表达式从不带空格的括号中获取名称

Regex 正则表达式从不带空格的括号中获取名称,regex,Regex,我试图在两个括号之间获取文件名,这两个括号可以包含名称和任何括号之间的空格。 例子: (文件名) 我使用正则表达式: (([A-Za-z_][A-Za-z0-9_]*)[ \t]*) 问题是,它将文件名与其前后的空格相匹配。 我想匹配不带空格的文件名。 非常感谢您的帮助。您可以使用 \(\s*(\S+)\s*\) 以第一组为例,参见。 解释: \( # match ( literally \s* # zero or more whitespaces (\S+) # capture

我试图在两个括号之间获取文件名,这两个括号可以包含名称和任何括号之间的空格。 例子: (文件名)

我使用正则表达式:

(([A-Za-z_][A-Za-z0-9_]*)[ \t]*)
问题是,它将文件名与其前后的空格相匹配。 我想匹配不带空格的文件名。 非常感谢您的帮助。

您可以使用

\(\s*(\S+)\s*\)
以第一组为例,参见。
解释:

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

\(\s*(\S+)\s*\)
以第一组为例,参见。
解释:

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

只需在捕获括号外添加\s*。(如果要匹配普通括号,还需要转义最外面的括号):


只需在捕获括号外添加\s*。(如果要匹配普通括号,还需要转义最外面的括号):


只需使用
\b[A-Za-z\u]\w*\b
匹配只包含单词字符的整个单词。只需使用
\b[A-Za-z\u]\w*\b
匹配只包含单词字符的整个单词。感谢Jan的回答,但它不起作用;它只是给了我“S”谢谢简的回答,但它不起作用;它只是给了我“S”谢谢你的回答。它不适用于转义括号。在不转义括号的情况下,它给出了文件名,前面有空格,后面没有空格。现在,我们需要删除前面的空格。你能给我们一个你想要匹配的字符串的例子吗(里面有括号吗)?我知道它是“(file_name)”,您想匹配file_name我正在编写一个解析器,它使用Lex读取文件。当它找到“include(file_name)”时,它将提取文件名并打开它以继续从中读取。如果文件名前后包含空格,“fopen”函数将显示错误。因此,我想提取文件名,前后不留空格。然后类似的方法应该可以工作:
include\s*(\s*([A-Za-z\][\w\.]*)\s*)
。谢谢你的回答。它不适用于转义括号。在不转义括号的情况下,它给出了文件名,前面有空格,后面没有空格。现在,我们需要删除前面的空格。你能给我们一个你想要匹配的字符串的例子吗(里面有括号吗)?我知道它是“(file_name)”,您想匹配file_name我正在编写一个解析器,它使用Lex读取文件。当它找到“include(file_name)”时,它将提取文件名并打开它以继续从中读取。如果文件名前后包含空格,“fopen”函数将显示错误。因此,我想提取文件名,前后不留空格。然后类似的方法应该可以工作:
include\s*(\s*([A-Za-z\][\w\.]*)\s*)
。查阅