[英]Java regex for string pattern
我想为此字符串模式编写一个正则表达式:
<Col name="SKU_UPC_NBR">85634546495</Col>
我想获取Col标签之间的值。
我尝试了以下模式:
Pattern TAG_REGEX = Pattern.compile("<Col name='SKU_UPC_NBR'>(.+?)</col>");
Matcher matcher = TAG_REGEX.matcher(str);
上面的不匹配我的字符串,返回空。 请帮我解决这个问题。
你可以试试:
<Col[^>]*>(.+?)<\/Col>
<Col[^>]*>
将与开始标签匹配。 [^>]*
表示匹配>以外的任何字符,以便匹配在遇到的第一个>处结束。 (.+?)
表示在开始和结束标记之间抓取1个或更多字符 <\\/Col>
这与结束标记匹配 请尝试以下方法:
(?<=">)\d*(?=<\/)
它将匹配0个或多个数字,其前面带有“>(引号和大于符号),然后是(小于符号和正斜杠)
您可以在这里测试:
正则表达式与您键入的内容完全匹配。 它没有泛化,它不了解有时对您' == "
,它不匹配混合情况。
您指定的数据格式是开放标签,空格,名称属性,等于, 双引号 ,名称属性数据...
您指定的正则表达式格式是开放标签,空格,名称属性,等号, 单引号 ,名称属性数据...
您需要的是
Pattern TAG_REGEX = Pattern.compile("<Col name=\"SKU_UPC_NBR\">(.+?)</Col>");
注意:您可能要使用(\\d+?)
而不是(.+?)
因为\\d
将匹配任何数字,因此正则表达式更特定于您要匹配的数据,并且更易于阅读。 但是,如果您知道某些Col
标签不会只包含数字,则此方法将不起作用
您可能要参考此简洁的交互式Regex教程 ,以进行regex的实践。
您可能还希望参考Java文档中的Regex模式 ,这在需要特殊字符时很有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.