【问题标题】:Regex match everything after parenthesis正则表达式匹配括号后的所有内容
【发布时间】:2012-10-31 08:04:09
【问题描述】:

我正在尝试批量重命名大约 10,000 个文件。我有一个工具可以使用正则表达式来做到这一点。

我只需要一个匹配" (" 的正则表达式以及之后的所有内容(空格、括号、所有内容)。

有谁能快速帮助解决这个非常简单的问题?

【问题讨论】:

  • 这看起来很简单。到目前为止你有没有尝试过?
  • (.* 和其他一些,但是我几乎没有任何正则表达式经验,我认为该程序正在尝试将 ( 作为正则表达式术语,而不是实际字母来阅读
  • 这可能是我当时使用的程序有问题,因为此时的两个答案都显示匹配整个短语。
  • 您能告诉我们您使用的是什么工具吗?
  • 批量文件重命名实用程序 - 我最终只是使用一个设置来修剪第一个 ( 之后的所有内容,然后第二次运行以删除最后 2 个字符。

标签: regex file


【解决方案1】:

如果你想在匹配中包含开括号:

/ \(.*/

如果不是,请使用积极的向后看:

/(?<= \().*/

在这里查看它的实际效果: http://regexr.com?32p42

【讨论】:

  • 分隔符不是正则表达式的一部分,而只是特定正则表达式引擎/语言使用的人工制品。
  • @m.buettner javascript 和 PCRE(和 perl)都使用分隔符。仍然值得注意的是它只是一个分隔符。
  • @JanDvorak 肯定会。而 .NET、Java 和大多数工具都没有(并且 OP 正在使用工具)
  • Lookbehind 并未得到普遍支持。某些版本不支持 any 后视。
  • 是的,/ 只是分隔符。为了便于阅读,我总是将它们包括在内,但它们可能是必需的,也可能不是。
【解决方案2】:

你真的应该看看a tutorial,因为这可能是你可以用正则表达式做的最简单的事情。应该这样做:

[ ]\(.*

方括号只是为了可视化空间。它们可以(但不是必须)被省略。

【讨论】:

    【解决方案3】:

    括号是正则表达式中的元字符,即它们意味着一些特殊的东西。如果要表示恰好是元字符的文字字符,则需要使用反斜杠 (\) 对其进行转义。例如,考虑插入符号 (^),它是一个匹配字符串开头的元字符。

    ^abcd
    matches strings beginning with the sequence of characters "abcd"
    
    \^abcd
    matches the sequence of characters "^abcd"
    

    您可以在此处阅读正则表达式中特殊字符和文字字符之间的区别以及如何转义它们:http://www.regular-expressions.info/characters.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      相关资源
      最近更新 更多