2011-08-30 202 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

感謝您的幫助和建議。 :) –

相關問題