【问题标题】:Extract text between quotes and insert after tag提取引号之间的文本并在标记后插入
【发布时间】:2014-06-02 21:12:14
【问题描述】:

我是一个正则表达式新手,似乎无法理解它。事情是,我没有时间,因为我在上班,需要做其他事情。我希望得到一个直接的答案,并解释它是如何工作的(如果可能的话)。

我有什么:

<li id=\"B1031.001\"><a href=\"#\">Bolted shear tab gravity connections</a></li>

我需要什么:

<li id=\"B1031.001\"><a href=\"#\">B1031.001 - Bolted shear tab gravity connections</a></li>

基本上,我需要获取 'id' 属性的值并将其添加到 a 标签的文本中。我希望有一种方法可以在 Notepad++ 中使用正则表达式来加快处理速度。

感谢您的阅读, 帕特里克

【问题讨论】:

  • 双引号真的转义了吗?请记住,这样做的好方法是使用您想要的语言的 html 解析器,而不是 notepad++。
  • @CasimiretHippolyte 是的,虽然不难找到 \" 并替换为 "
  • 是的,但我很难搜索\",因为它只有"

标签: regex notepad++


【解决方案1】:

你可以这样做:

search:  <li id=\\"([^"]+)\\"><a href=\\"#\\">\K
replace: $1 -      (<- there is a trailing space)

\K 从匹配结果中删除左侧所有匹配的内容。换句话说,左侧匹配的所有内容都不会被替换。唯一被替换的是&gt; 之后的空字符串(来自a 标记)。 (搜索模式的目标只是捕获id值并到达插入位置。)

([^"]+) 捕获组 1 中 id 属性的内容。[^"] 不是双引号,+ 一次或多次)

$1 指的是这个捕获组的内容。

【讨论】:

  • 当我搜索字符串时,没有出现错误消息,但在“^ 零长度匹配”行下方弹出一个标签
  • @PBarnum: 会阻止替换吗?
  • 很抱歉,效果很好!我没有单击“全部替换”,而是尝试查找或替换一个,但这是行不通的。接受为答案。
【解决方案2】:

在记事本++中可以搜索:

 <li id=\\[\"](.*?)[\"]><a href=\\"#\\">

并将其替换为:

<li id=\"$1\"><a href=\"#\">$1 - 

基本上它将替换整个字符串,但用 $1 替换括号内正则表达式匹配的内容。

【讨论】:

  • 对不起。代码块吃了一些斜线,改为搜索:
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签