可能重复:RegEx匹配HTML标记并提取文本
我需要在html标签之间得到文本<p></p>或者其他什么.我的模式就是这个
Pattern pText = Pattern.compile(">([^>|^<]*?)<");
Run Code Online (Sandbox Code Playgroud)
任何人都知道一些更好的模式,因为这个不是很有用.我需要它来索引来自网页的内容.
谢谢
我真的在努力解决这个问题:
import java.util.regex.*;
class Regex2 {
public static void main(String[] args) {
Pattern p = Pattern.compile(args[0]);
Matcher m = p.matcher(args[1]);
boolean b = false;
while(b = m.find()) {
System.out.print(m.start() + m.group());
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用以下命令运行上述程序时:
java Regex2 "\d*" ab34ef
Run Code Online (Sandbox Code Playgroud)
它输出01234456.我真的不明白这个输出.考虑每个字符的以下索引:
a b 3 4 e f
^ ^ ^ ^ ^ ^
0 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
输出应该不是0123445吗?
我一直在阅读,看起来RegEx引擎也将读取字符串的结尾,但我只是不明白.如果有人可以提供有关如何获得该结果的分步指南,将不胜感激.即如何找到每个数字.
我想匹配具有奇数长度的01的正则表达式字符串.例:"0","001","111","11111" etc.
这个想法是奇数长度的序列是0或1,然后是0或1对.但我的正则表达式似乎不起作用.我做的:
String regex = "[0-1]{1}[[0-1]{2}]{0,}";
String txt = "01";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(txt);
System.out.println(m.matches());
Run Code Online (Sandbox Code Playgroud) 我有一个类似的字符串
[{"id":"9","label":"P","price":"0","oldPrice":"0","products":["606","610","614","618","622","625","629"]},{"id":"8","label":"M","price":"0","oldPrice":"0","products":["607","611","615","619","626","630"]},{"id":"7","label":"G","price":"0","oldPrice":"0","products":["609","613","617","621","624","628","632"]},{"id":"36","label":"GG","price":"0","oldPrice":"0","products":["608","612","616","620","623","627","631"]},{"id":"152","label":"XGG","price":"0","oldPrice":"0","products":["3713","6577","6578","6579","6580","6581","6582"]}]
Run Code Online (Sandbox Code Playgroud)
我需要的是标签值:P,M,G,GG,XGG.我试图在标签和逗号之间获取所有内容,但它不起作用
"(标签)(.*)(,)"
我有以下Java程序,它抓取日期时间字符串并在多个正则表达式测试站点中进行测试,以检查它们是否确实有效,他们这样做.
private static final Pattern MATCH_DATE_TIME = Pattern.compile("<span id=\"lblMatchTime\" style=\"padding: 0px;\">([\\d+/ GMT:]+)</span>");
Run Code Online (Sandbox Code Playgroud)
未转义的表达版本
<span id="lblMatchTime" style="padding: 0px;">([\d/ :GMT]+)</span>
Run Code Online (Sandbox Code Playgroud)
以及我在上面测试过的网站.
有以下数据
<div style="width: 30%; text-align: center; display: inline-block;"> <span> Time : </span> <span id="lblMatchTime" style="padding: 0px;">05/28/2014 14:16:21 GMT</span> </div> <div style="width: 30%; text-align: center; display: inline-block;"> <span>duration: </span> <span id="lblMatchDuration" style="padding: 0px;">50</span> <span> minutes </span> </div> </div>
Run Code Online (Sandbox Code Playgroud)
具有未转义版本的上述两个网站都正确匹配下面的预期数据
<span id="lblMatchTime" style="padding: 0px;">05/28/2014 14:16:21 GMT</span> //the matched data
05/28/2014 14:16:21 GMT //$1 extracted data
Run Code Online (Sandbox Code Playgroud)
虽然上述两个站点都成功匹配并提取了我的程序没有的数据.
这是我的程序的代码(最小代码示例)
private static final Pattern …Run Code Online (Sandbox Code Playgroud) 假设我有一个url param,token=1234235asdjaklj231k209a&name=sam&firname=Mahan
我怎样才能用新的替换令牌的值?我以前用模式和匹配器做了类似的事情,但我现在不记得了,但我知道有办法这样做更新:令牌可以包含任何字母,但提前感谢
对于快速示例,我有以下字符串:
String s = "hey.there.man.${a.a}crazy$carl${a.b}jones
Run Code Online (Sandbox Code Playgroud)
我也有以下方法:
private String resolveMatchedValue(String s) {
if(s.equals("a.a")) {
return "A";
else if(s.equals("a.b")) {
return "Wallet";
else if(.....
....
}
Run Code Online (Sandbox Code Playgroud)
我的模式是
Pattern pattern = Pattern.compile("\\$\\{(.*?)\\}");
Run Code Online (Sandbox Code Playgroud)
因此,对于匹配$ {.*}的s中的每个子字符串,我希望调用resolveMatchedValue方法,并且应该替换它.理想情况下,在正则表达式过程之后应该如此
s = "hey.there.man.Acrazy$carl$Walletjones
Run Code Online (Sandbox Code Playgroud)
我已经查看了类似的解决方案,但没有根据匹配的值动态替换匹配的值,并且无法使其工作
编辑:使用java8
在我的帮助器类中,我从日志文件中提取键字符串.在那里我搜索一个日期和子串的文本.问题是当我包括该日期包括使用java日期的短语时,硬编码的日期以不同的方式起作用.
代码段:
BufferedReader br = new BufferedReader(new FileReader("/developer.log"));
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
line = br.readLine();
}
String second = sb.toString();
String pattern = "yyyy-MM-dd";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
String date = "]"+simpleDateFormat.format(new Date());
Matcher m2 = Pattern.compile("^(.*)date(.*)$").matcher(second);
if (m2.find()) {
String keyPrefix = "Bearer ";
key = keyPrefix + m2.group(1);
}
}
br.close();
return key;
Run Code Online (Sandbox Code Playgroud)
该date变量不会返回模式匹配,但是当我对字符串进行硬编码时]2019-03-01它会起作用.这可能是什么问题?提前致谢.
我想正则表达式可以匹配
<FONT FACE=\"Verdana\" SIZE=\"12\"> My Name is xyz </FONT>或
<LI><FONT FACE=\"Verdana\" SIZE=\"12\"> My Name is xyz </FONT></LI> 它不应该是贪婪的