2011-08-30 60 views
0

当你理解时很容易...不幸的是,我不知道!如果您能指导我解答,我会深表谢意,谢谢。使用正则表达式从字符串中删除文本(&括号)

我想捕获一个字符串,只使用正则表达式,但删除括号内的任何文本。例如

这是一个典型的串...

<td class="rc_entry_alt" >Mark Anthony (IRE)</td> 

我可以捕捉 “马克·安东尼(IRE)” 很容易。我目前正在使用...

/<td class="rc_entry(_alt)?" >.*<\/td>/ 

我想删除“(IRE)”。请注意第一个括号之前的前一个空格。我也想删除它。此外,()之间的文字也会有所不同,例如,美国,ITY,FR等,这应该是这样的......

Mark Anthony 

我毫不怀疑这很简单,但它令我困惑不解。感谢您的时间:)

n.b.括号内的东西并不总是在那里。有时候我用我提到的原始代码得到我想要的。

+2

编辑您的文章以包括您当前的正则表达式,然后我们可以建议修改。 –

+0

从它的外观来看,我会建议使用支持节点遍历/操作的HTML库...如果没有,请在SO上搜索这种正则表达式(“从HTML元素中获取东西的种类”)共同。请注意,提取节点内容然后删除“(stuff)”可以看作两个单独的步骤。 – 2011-08-30 20:47:33

+0

我很抱歉。相信我,张贴这是我知道的跛脚,但这只是我无法找到答案的一件事,不管我搜索了多少。再次抱歉。 –

回答

0

好了,首先删除HTML,然后做这样的事情,除去(...)部分:

\s+\(.*?\) 

如果知道(...)的部分是在最后一件事字符串(即有之后没有),你可以用它来检查它的结尾,太:

\s+\(.*?\)$ 

只需使用正则表达式查找和替换功能,找到上面的表达,什么也没有更换。

+0

非常感谢。有用。我看到这条道路如何纠正这个问题。我开悟了。 :) –

1

您的Regexp看起来像这样。 acutal Syntax取决于你的编程语言/工具。

首先您需要匹配<td ..>部分。然后你将所有东西都归为(。那么要确定匹配括号中的所有内容,然后是</td>

/<td[^>].*>\([^(]*\)(.*)</td>/ 

您应该阅读杰弗里弗里德的书:掌握正则表达式。

+0

感谢您的帮助和建议。 :) –

相关问题