我有这个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。我该如何使用查找功能? 谢谢
答案 0 :(得分:5)
执行此操作的正确方法是使用解析器,但是如果您想在Notepad ++的“查找”中使用快速而肮脏的正则表达式...
尝试以下正则表达式:
\w+(?=<\/a>) # match all [A-Za-z0-9_] before </a>
如果文本中可能包含空格,则可以使用以下正则表达式:
(?<=>).+(?=<\/a>)
答案 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>)
中。
如果您希望简化/修改/探索表达式,请在regex101.com的右上角进行说明。如果愿意,您还可以在this link中查看它如何与某些示例输入匹配。
答案 2 :(得分:1)
这与<a..>
内<div class="abc">
标记中的所有文本匹配,带有或不带有空格或换行符。
<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
屏幕截图:
答案 3 :(得分:0)
vs97s正则表达式的改进之处在于:([\s\S])*?<a.*?>(.*?)<\/a>([\s\S])*?
用\2\n
作为替换!
说明:
([\s\S])*?
会采取任何措施,直到下一次模式匹配为止(不满意)
<a.*?>(.*?)<\/a>
带有<a[...]>TEXT</a>
标记并保存文本
([\s\S])*?
嗯...见上文! ;-)
如果您将其替换为\2\n
,则第二个匹配项(即a-tag的文本)将放置在该位置,然后以换行符代替该标签。