用正则表达应该怎样才能找到()中的任意中文并去除呢?

清风出袖

高级会员
我在一个中英混排的文本中想把里面很少的中文解释去除掉(中文解释加在()中间),利用的是 powergrep 3 想用 找\(\w\),而后再在 replacement 中什么也不填写,以为这样可以去除掉。 但是很久不用正则表达式了,似乎不灵,怎么也找不到,可能是我写错公式了吧?应该怎么写才能找到() 中的任意中文并且去除掉呢?不过还好我用TEXTpro 解决了批量去除括号中中文注释的问题,但是还是没能解决在powergrep 3 中批量解决此问题的办法,请常用正则表达的高手给解疑释惑,谢谢咯!
 
回复: 我用这个正则表达检索公式为什么检索不到所需要的内容?

如果所有括号中都只有中文注释的话 可以用\(.*?\)
 
回复: 我用这个正则表达检索公式为什么检索不到所需要的内容?

谢谢了,可能是吧我试试看。
 
回复: 我用这个正则表达检索公式为什么检索不到所需要的内容?

这个的确是正确的,我明白了,昨天晚上我忘记了\w 只代表所有的数字和字母以及下划线,但是有个问题,如果括号里面有汉语还有英语的话,如何解决只把含有汉语的括号和汉语删除呢?在textpro 中正则表达式支持\c 表示汉语字符,但是在powergrep 中不支持此命令。我想问下如何在\(.*?\) 的括号内再加一点正则表达式把\w 加进去,这样把英语排除在外就可以了,但是怎么写排除的正则表达式呢?请高手惠赐帖子,谢谢。
 
回复: 我用这个正则表达检索公式为什么检索不到所需要的内容?

http://www.regexlab.com/zh/replshop.asp?pat=&rto=&txt=&dlt=

如果使用半角括号需要用转义符"\", 因为半角括号是正则表达式的保留字。
半角情况:
表达式:\((.*?)\)
替换为:(空字符,什么也不要输入)
文本:please delete chinese(中文) characters(字符) in this text.

全角情况:
表达式:((.*?))
替换为:(空字符,什么也不要输入)
文本:please delete chinese中文 characters字符 in this text.
 
回复: 我用这个正则表达检索公式为什么检索不到所需要的内容?

若经常使用WORD,不妨试试MS WORD的高级查找替换功能:
检索框用这个:
[\((《][!a-zA-Z0-9]@[)》)\(]

具体见附件
 

附件

  • MS Wword regex功能.doc
    77.5 KB · 浏览: 50
回复: 我用这个正则表达检索公式为什么检索不到所需要的内容?

你可以提供一个样本,我帮你写个小程序搞定
 
回复: 我用这个正则表达检索公式为什么检索不到所需要的内容?

谢谢william jia, xusun575, Arthur W 三位鼎力相助,其实我发现自己挺囧的。自己昨晚在搜索站内有关正则表达式信息时,发现不少是我劝人家使用的,哈哈,自己还没整明白,惭愧,我自己用许家金博士推荐的TEXTpro 5.1发现批量处理文档中括号内的中文效果也不错,谢谢各位的主意,我先试试看,如果还有问题一定请大家批评指正,多出主意。特别感谢william jia 如果需要程序,还要麻烦您!
 
回复: 我用这个正则表达检索公式为什么检索不到所需要的内容?

[^\x00-\xff] 替换为空就行了
 
回复: 我用这个正则表达检索公式为什么检索不到所需要的内容?

我刚才在powergrep3 中试了一下诸位提供的正则表达式,发现似乎只有william jia 友情提供的半角括号适用公式\((.*?)\)管用,但是会把括号中的英文也去除掉,但是对于我特意加在某些括号内的...,这个表达式也能去掉,去除功能还是蛮强的,但是这个得出的效果和ArthurW昨晚提供\(.*?\)有些区别,不知道为什么这两个公式有区别仍然起到同样的作用呢?请大家解疑释惑。 xusun575 的还没来得及尝试。其他的ArthurW和Hittle2008友情提供的公式不太管用。我把试验文档拿上来请大家也试试看,谢谢了。
 

附件

  • 1993-01.txt
    6.7 KB · 浏览: 22
回复: 我用这个正则表达检索公式为什么检索不到所需要的内容?

我刚才在powergrep3 中试了一下诸位提供的正则表达式,发现似乎只有william jia 友情提供的半角括号适用公式\((.*?)\)管用,但是会把括号中的英文也去除掉,但是对于我特意加在某些括号内的...,这个表达式也能去掉,去除功能还是蛮强的,但是这个得出的效果和ArthurW昨晚提供\(.*?\)有些区别,不知道为什么这两个公式有区别仍然起到同样的作用呢?请大家解疑释惑。 xusun575 的还没来得及尝试。其他的ArthurW和Hittle2008友情提供的公式不太管用。我把试验文档拿上来请大家也试试看,谢谢了。

其实WORD就已经够用了。结果见附件,一个是清除,一个是染红:D
 

附件

  • !染红.doc
    30 KB · 浏览: 23
  • !清空.doc
    27 KB · 浏览: 16
回复: 我用这个正则表达检索公式为什么检索不到所需要的内容?

[\((《][!a-zA-Z0-9]@[)》)\(]
高级选项下选中“使用通配符”即可。

说明:这个regex有三对方括号,
第一对方括号“[\((《]”界定起始的括号;
中间一对方括号界“[!a-zA-Z0-9]”内查找内容,"!"是word中的“非”,相当于其它的"^",;
最后一对方括号“[)》)\(]”界定结束符号,这里与第一对呼应。
"@"相当于“{1,}”或 “*”只不后者表示“0或多个以上”。
作为强大的文字处理软件,WORD的功能应该好好的挖掘一下。
 
回复: 我用这个正则表达检索公式为什么检索不到所需要的内容?

谢谢xusun575拨冗赐教!
 
回复: 我用这个正则表达检索公式为什么检索不到所需要的内容?

这个的确是正确的,我明白了,昨天晚上我忘记了\w 只代表所有的数字和字母以及下划线,但是有个问题,如果括号里面有汉语还有英语的话,如何解决只把含有汉语的括号和汉语删除呢?在textpro 中正则表达式支持\c 表示汉语字符,但是在powergrep 中不支持此命令。我想问下如何在\(.*?\) 的括号内再加一点正则表达式把\w 加进去,这样把英语排除在外就可以了,但是怎么写排除的正则表达式呢?请高手惠赐帖子,谢谢。

在powergrep3中试下这个“\([^a-z]+\)”(不包括引号)。
 
回复: 我用这个正则表达检索公式为什么检索不到所需要的内容?

我不怎么用PowerGrep这些软件 一般是用perl写小程序的 或许软件中的规定有些不同吧
\([^[:ascii:]]+\) 这个在perl脚本中试验是通过的
 
回复: 我用这个正则表达检索公式为什么检索不到所需要的内容?

我不怎么用PowerGrep这些软件 一般是用perl写小程序的 或许软件中的规定有些不同吧
\([^[:ascii:]]+\) 这个在perl脚本中试验是通过的

谢谢wxsong和 arthurw 我再试试看。
 
回复: 我用这个正则表达检索公式为什么检索不到所需要的内容?

请教各位:英文句子的正则表达式应如何编写?
 
Back
顶部