正则表达式找到括号未关闭的字符串

时间:2015-10-22 08:25:50

标签: regex preg-replace preg-match regular-language

我需要一个正则表达式来查找括号未关闭的字符串

示例:

02 Back for Good (Radio Mix.mp3

查找“(Radio Mix”

但是如果

02 Back for Good (Radio Mix).mp3

必须找不到任何东西

4 个答案:

答案 0 :(得分:3)

如果要捕获文件扩展名,可以执行以下操作:

\([^\)]*(?=\.\w+$)

https://regex101.com/r/cB1jG2/1

它会查找一个开头括号,后面跟着除了一个右括号,然后是一个正向前瞻,以便在字符串的末尾找到一个文件扩展名。

如果您知道可能的文件扩展名,则可以更直观:

\([^\)]*(?=\.(?:wav|mp3)$)

如果您可以使用嵌套括号,这可以匹配某些情况,但不是全部,并且可以简化为更清晰的事情:

\((?:\([^\(\)]*?\)|[^\)])*(?=\.\w+$)

https://regex101.com/r/aQ1eO3/1

答案 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;