删除特定字符后的单词

时间:2013-01-06 16:42:52

标签: regex

我正在使用软件使用正则表达式编辑歌曲。这就是我所拥有的:

  

吉米吃世界 - 中间(.mp3)

我想要做的是删除“ - ”之前的空格以及之后的所有内容,所以我只剩下“吉米吃世界”

我想要执行的其他操作是删除所有内容,直到“ - ”和后面的空格,所以我只剩下“中间”

4 个答案:

答案 0 :(得分:9)

这很简单。

第一个操作 - 删除短划线后的所有内容:

  • 用空字符串替换/ -.*/。 (注意破折号前面有一个实际空间。)
  • 如果短划线前有多个空格,您可以使用此变体:/ +-.*/(同样在+之前有一个实际空格。)

第二次操作 - 删除短划线上的所有内容:

  • 用空字符串替换/.* - /。 (注意破折号后面有一个实际的空格。)

注释

  • 上面的斜杠/不是正则表达式的一部分,您不必输入它们。它们在这里作为视觉分隔符。
  • .表示“任何字符”(换行符除外,您不会在文件名中使用)
  • *表示“上一项,零至任意次数”
  • +表示“上一项,至少一次,可能是任意次数”
  • 正则表达式中的大多数其他字符表示他们所说的内容,因此正则表达式中的空格将匹配字符串中的空格。值得注意的例外包括^$.+*?{}()[]|\,它们有其特殊的含义,但没有深入关注你的情况。

答案 1 :(得分:1)

这将匹配用空格,空格和后面的所有内容包围的第一个连字符(用空字符串替换):

\s\-\s.*

这将匹配用空格,空格和之前的所有内容包围的第一个连字符:

.*\s\-\s

这将匹配文字(.mp3)和之前的可选空格(任意金额):

\s*\(\.mp3\)

答案 2 :(得分:0)

要检索歌曲名称,请尝试替换.*-\s*。然后无需替换\s*\(\.mp3\)

如果你有各种文件类型,如MP3和WMA,你可以将其他文件类型添加到第二个正则表达式,如下所示:\s*\(\.(mp3|wma|avi|mpg|mpeg)\)

答案 3 :(得分:0)

您的程序是否能够提取正则表达式中括号括起来的组?如果是这样,你可以在这里创建一个像这样的表达式(例子是用Python编写的):

In [1]: import re    

In [2]: match_obj = re.match(r'(.+?)\s*-\s*(.+?)\.mp3', 'Jimmy Eat World - The Middle.mp3')

In [3]: match_obj.group(1)
Out[3]: 'Jimmy Eat World'

In [4]: match_obj.group(2)
Out[4]: 'The Middle'