向后查找

Java正则表达式通过回溯与前后查找提取标签中的内容

泪湿孤枕 提交于 2019-12-10 05:22:28
在说具体的内容之前先来了解一下什么是向前查找,向后查找与回溯。我们通过一下小的例子来理解一下。具体的代码附录在最后。 ##向前查找 Java中向前查找的正则表达式是(?=),更加具体的就是 要匹配内容的正则(?=匹配的边界的正则) 。来一个具体的例子,比如我们有一个具体的字符串 2016年:鸡翅 15元 鸡腿 10元 鸡爪 5元 ,现在我们要取出里面的价格15 10 5,而不要2016,显然我们不能直接\d+来匹配。 我们很容易发现规律,我们需要提取单位‘元’前面的数字,但是我们不想要单位‘元’,怎么办,这里就可以使用向前查找了。 content = "2016年:鸡翅 15元 鸡腿 10元 鸡爪 5元"; //正则表示,匹配元前面的数字,以元作为数字的后边界但是不匹配‘元’ regex = "\\d+(?=元)"; 匹配的结果就是15 10 5,不包含2016,后面有代码可以自己测试一下。 ##向后查找 首先向后查找的正则表达式是(?<=),更加具体的就是*(?<=匹配边界的正则)要匹配内容的正则*,向后查找和向前查找一样,只不过是匹配边界后面的内容。下面还是通过一个具体的例子来说明。比如我有一个url字符串: http://www.freemethod.cn,我想提取出www.freemethod.cn。要真么做了。这里就可以使用向后匹配。当然你说我有一万种方法可以完成这个事情