【问题标题】:Remove text (& brackets) from a string with regex使用正则表达式从字符串中删除文本(和括号)
【发布时间】:2011-11-07 03:40:15
【问题描述】:

当你理解时很容易......不幸的是,我不明白!如果您能指导我回答,我将非常感谢您,谢谢。

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

这是一个典型的字符串...

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

我可以很容易地捕捉到“Mark Anthony (IRE)”。我目前正在使用...

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

我想要删除“(IRE)”。注意第一个括号之前的空格。我也想删除这个。此外,() 之间的文本会有所不同,例如USA, ITY, FR, etc. 应该是这个样子...

Mark Anthony

我毫不怀疑它非常简单,但它却让我无法理解。谢谢你的时间:)

n.b.括号中的内容并不总是存在。有时我会用我提到的原始代码得到我想要的。

【问题讨论】:

  • 编辑您的帖子以包含您当前的正则表达式,然后我们可以提出修改建议。
  • 从外观上看,我建议使用支持节点遍历/操作的 HTML 库......如果没有,请在 SO 上搜索这种正则表达式(“那种把东西拿出来HTML 元素”) 很常见。请注意,提取节点内容然后删除“(stuff)”可以视为两个单独的步骤。
  • 我很抱歉。相信我,我知道发布这个是蹩脚的,但这只是我找不到答案的一件事,无论我搜索了多少。再次抱歉。

标签: regex


【解决方案1】:

您的正则表达式看起来像这样。实际语法取决于您的编程语言/工具。

首先您需要匹配&lt;td ..&gt; 部分。然后你将所有内容都记录到(。然后确保匹配括号中的所有内容,然后是&lt;/td&gt;

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

您应该阅读 Jeffrey Friedl 的《掌握正则表达式》一书。

【讨论】:

  • 感谢您的帮助和推荐。 :)
【解决方案2】:

好的,所以先删除 HTML,然后执行以下操作删除 (...) 部分:

\s+\(.*?\)

如果您知道 (...) 部分是字符串中的最后一件事(即它后面没有任何内容),您可以使用它来检查它是否也在末尾:

\s+\(.*?\)$

只需使用正则表达式查找和替换函数,找到上面的表达式,然后什么都不替换。

【讨论】:

  • 非常感谢。有用。我看到这条路径如何解决问题。我开悟了。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-28
相关资源
最近更新 更多