1

我想改变一个字符串,如下所示。但我找不到确切的正则表达式模式。

字符串如:

堆栈溢出 (1234)

堆栈交换 (12)

我想要的是继续

堆栈溢出

堆栈交换

我正在使用 Notepad++、UltraEdit 等。此外,尝试 sed 命令也会非常有用。

谢谢大家

4

4 回答 4

1

不知道 Notepad++ 但使用 sed 它是一个简单的命令:

 sed -i.bak 's/ *(.*$//' file

-i用于内联编辑(它将转换后的文件保存为原始另存为file.bak

于 2013-09-29T15:07:44.537 回答
1

尝试使用此查找:

\s+\([^)]+\)

并无所取代。

\s+匹配空格。

\(匹配左括号。

[^)]+匹配除右括号之外的任何字符。

)匹配右括号。


[(*)]将匹配 中的任何一个(*或者)因为它们在字符类中。

您也可以使用其他方式\s+\(.*?\),但它不如上面的正则表达式安全。在正则表达式中,点是通配符,括号用于捕获;这就是为什么我不得不用反斜杠来逃避它们。你不需要在字符类中转义它们,例如,你可以使用这个:\s+[(].*?[)]虽然它有点长!

于 2013-09-29T15:07:44.877 回答
0

使用awk你可以这样做:

awk '{sub(/ \(.+\)/,x)}1' file
于 2013-09-29T15:42:08.360 回答
0

替换(Ctrl+ H):

^(.+?)\s*\(\d+\)$

经过:

$1

这是它的工作原理:

正则表达式可视化

第 1 组中的所有内容都被保留,其余的都被丢弃。

于 2013-09-29T15:08:31.520 回答