在href标记记事本++之间提取文本

时间:2019-09-23 22:18:03

标签: regex notepad++

我有这个html页面:

<div class="abc">
<a href="www...." title="aaaaa">TEXTONE</a>
</div>

<div class="abc">
<a href="www...." title="bbbb">TEXTTWO</a>
</div>

只有div类是相同的,我需要提取TEXTONE和TEXTTWO。我该如何使用查找功能? 谢谢

4 个答案:

答案 0 :(得分:5)

执行此操作的正确方法是使用解析器,但是如果您想在Notepad ++的“查找”中使用快速而肮脏的正则表达式...

尝试以下正则表达式:

\w+(?=<\/a>)            # match all [A-Za-z0-9_] before </a>

Regex Demo

如果文本中可能包含空格,则可以使用以下正则表达式:

(?<=>).+(?=<\/a>)

Regex Demo

enter image description here

答案 1 :(得分:1)

我猜想也许您还有其他元素,可能您想查找/替换,如果是这种情况,有些表达式类似于:

@Test
public void test02() {
    String stringstring = parseObject02("stringstring", String.class);
    System.out.println(stringstring);
    List list = parseObject02("[1,2,3]", List.class);
    System.out.println(list);
//        output in console
//        stringstring
//        [1.0, 2.0, 3.0]
}

public <T> T parseObject02(String parameters, Class<T> clazz) {
    Gson gson = new Gson();
    T obj = gson.fromJson(parameters, clazz);
    return obj;
}

可能会工作,并且您期望的输出在(<div class="abc">\s*<a\s+[^>]*>)(.+?)(<\/a>) 中。

Demo


如果您希望简化/修改/探索表达式,请在regex101.com的右上角进行说明。如果愿意,您还可以在this link中查看它如何与某些示例输入匹配。


答案 2 :(得分:1)

这与<a..><div class="abc">标记中的所有文本匹配,带有或不带有空格或换行符。

  • Ctrl + F
  • 查找内容:<div class="abc">\s+<a [^>]+>\K.+?(?=</a>)
  • 检查环绕
  • 检查正则表达式
  • 检查. matches newline
  • 查找下一个

说明:

<div class="abc">   # literally
\s+                 # 1 or more spaces
<a [^>]+>           # <a...> tag
\K                  # forget all we have seen until this position
.+?                 # 1 or more any character, included newlines
(?=</a>)            # positive lookahead, make sure we have and tag after

屏幕截图:

enter image description here

答案 3 :(得分:0)

vs97s正则表达式的改进之处在于:([\s\S])*?<a.*?>(.*?)<\/a>([\s\S])*?\2\n作为替换!

说明:

([\s\S])*?会采取任何措施,直到下一次模式匹配为止(不满意)

<a.*?>(.*?)<\/a>带有<a[...]>TEXT</a>标记并保存文本

([\s\S])*?嗯...见上文! ;-)

如果您将其替换为\2\n,则第二个匹配项(即a-tag的文本)将放置在该位置,然后以换行符代替该标签。

相关问题