我需要一个正则表达式查找字符串,其中括号不是封闭正则表达式查找字符串,其中括号不是封闭
例子:
02 Back for Good (Radio Mix.mp3
查找“(无线电混合”
但如果
02 Back for Good (Radio Mix).mp3
必须找到什么
我需要一个正则表达式查找字符串,其中括号不是封闭正则表达式查找字符串,其中括号不是封闭
例子:
02 Back for Good (Radio Mix.mp3
查找“(无线电混合”
但如果
02 Back for Good (Radio Mix).mp3
必须找到什么
如果你想捕捉直到文件扩展名,你可以这样做:
\([^\)]*(?=\.\w+$)
https://regex101.com/r/cB1jG2/1
它寻找一个左括号其次是什么除了一个右括号,然后正向前查找找到字符串的结尾文件扩展名。
如果你知道可能的文件扩展名,你可以更直译:
\([^\)]*(?=\.(?:wav|mp3)$)
如果你能有嵌套括号,这可以匹配某些情况下,但不是所有,甚至能够降低到一些清洁剂:
\((?:\([^\(\)]*?\)|[^\)])*(?=\.\w+$)
希望这将帮助你
preg_match('/\(.+\)$/','02 Back for Good (Radio Mix.mp3');
\(
匹配的文字(
。.+
匹配一个或多个字符。\)$
与文字)
匹配的字符串结尾。因此,如果它是字符串中的最后一个字符,则整个表达式从第一个开括号到最后一个关闭括号匹配。否则,它不会匹配。
感谢您的帮助,但它在我需要的另一个方向。 Find(Radio Mix.mp3 only if end of not parenthesis –
@DavidZeller检查更新的答案,希望这会有所帮助 –
虽然这个正则表达式可以回答这个问题,但提供了关于为什么和/或代码如何回答问题提高了它的长期价值 – JAL
以下正则表达式捕获所需的输出:
(\([\w\s]+).mp3
工作示例可以是found on Regex101。
它搜索打开的括号 - \( - ,抓住了字/位(\ W)和whitspaces(\ S),并附加文件扩展名 “MP3” - 这样, 。右括号丢失
请分享到目前为止,你已经尝试了什么。 –
我想知道如何“编程”正则表达式引擎来查找右括号应该是的地方。 –
像这样的正则表达式可能会工作[Regex101示例](https://regex101.com/r/fU4eV8/3) – benjamin