我需要一个正则表达式来查找括号未关闭的字符串
示例:
02 Back for Good (Radio Mix.mp3
查找“(Radio Mix”
但是如果
02 Back for Good (Radio Mix).mp3
必须找不到任何东西
答案 0 :(得分:3)
如果要捕获文件扩展名,可以执行以下操作:
\([^\)]*(?=\.\w+$)
https://regex101.com/r/cB1jG2/1
它会查找一个开头括号,后面跟着除了一个右括号,然后是一个正向前瞻,以便在字符串的末尾找到一个文件扩展名。
如果您知道可能的文件扩展名,则可以更直观:
\([^\)]*(?=\.(?:wav|mp3)$)
如果您可以使用嵌套括号,这可以匹配某些情况,但不是全部,并且可以简化为更清晰的事情:
\((?:\([^\(\)]*?\)|[^\)])*(?=\.\w+$)
答案 1 :(得分:0)
希望这会对你有所帮助
UIViewController *myViewController = [[FormApplicationViewController alloc] initWithNibName:@"FormApplicationViewController" bundle:nil];
highlighted
与文字preg_match('/\(.+\)$/','02 Back for Good (Radio Mix.mp3');
匹配。\(
匹配一个或多个字符。(
匹配字符串结尾的文字.+
。因此,如果它是字符串中的最后一个字符,则整个表达式从第一个开始括号到最后一个右括号匹配。否则,它将无法匹配。
答案 2 :(得分:0)
在Regex之后捕获所需的输出:
(\([\w\s]+).mp3
一个工作示例可以是found on Regex101。
它搜索一个打开的括号 - \( - ,捕获单词/数字( \ w )和whitspaces( \ s )并附加文件扩展名“ mp3 ” - 这样就会丢失右括号。
答案 3 :(得分:0)
我认为最好的方法是尝试使用2个正则表达式,并计算括号组的数量与(
或)
相同,因此在这种情况下,您是安全的对于所有情况:
const value = <titleToCheck>;
const allParenthesisAreCorrect =
(value.match(/\(.*?\)/g) || []).length !==
(value.match(/\(/g) || []).length ||
(value.match(/\(.*?\)/g) || []).length !==
(value.match(/\)/g) || []).length;