用于字符串模式的Java正则表达式
我想为这个字符串模式编写一个正则表达式:用于字符串模式的Java正则表达式,java,regex,Java,Regex,我想为这个字符串模式编写一个正则表达式: <Col name="SKU_UPC_NBR">85634546495</Col> 85634546495 我想获取Col标记之间的值 我尝试了以下模式: Pattern TAG_REGEX = Pattern.compile("<Col name='SKU_UPC_NBR'>(.+?)</col>"); Matcher matcher = TAG_REGEX.matcher(str); Patter
<Col name="SKU_UPC_NBR">85634546495</Col>
85634546495
我想获取Col标记之间的值
我尝试了以下模式:
Pattern TAG_REGEX = Pattern.compile("<Col name='SKU_UPC_NBR'>(.+?)</col>");
Matcher matcher = TAG_REGEX.matcher(str);
Pattern TAG_REGEX=Pattern.compile((.+?));
Matcher Matcher=TAG_REGEX.Matcher(str);
以上内容与我的字符串不匹配,返回空。
请帮我解决这个问题。试试这个,请:
(?<=">)\d*(?=<\/)
(?(引号和大于号)后接(小于号和正斜杠)
您可以在此处进行测试:
您可以尝试:
<Col[^>]*>(.+?)<\/Col>
]*>(.+?)
]*>
将匹配开头标记。[^>]*
表示匹配除>以外的任何字符,因此匹配将在遇到的第一个>处结束
(.+?)
表示在开始和结束标记之间抓取一个或多个字符
这与结束标记匹配
正则表达式与您键入的内容完全匹配。它不通用,它不理解有时对您来说,它不匹配混合情况
您指定的数据格式是开放标记、空格、名称属性、等于、双引号、名称属性数据…
您指定的正则表达式格式是开放标记、空格、名称属性、等于、单引号、、名称属性数据
你需要的是
Pattern TAG_REGEX = Pattern.compile("<Col name=\"SKU_UPC_NBR\">(.+?)</Col>");
Pattern TAG_REGEX=Pattern.compile((.+?));
注意:您可能希望使用(\d+?)
而不是(.+?)
,因为\d
将匹配任何数字,因此正则表达式更特定于您要匹配的数据,并且更易于阅读。但是,如果您知道某些Col
标记中不会只有数字,那么这将不起作用
您可能需要参考以练习正则表达式
您可能还希望引用,这在需要特殊字符时非常有用。字符串中的名称值有双引号,但模式中有单引号。此外,字符串中的结束标记是
,但模式是
。模式标记\u REGEX=pattern.compile(.+?));我这样修改了,但仍然不起作用。我正在单引号中传递SKU_UPC_NBR,因为我已经为@Narayanchandramohan设置了双引号。请查看我的答案并尝试一下,如果您需要更多修改,请告诉我。阅读java转义序列……这非常基本。解释解决方案的方式总是一个好主意工作。仅仅给出代码而不做解释并不能帮助OP知道它是如何工作的或为什么工作的,也不能帮助OP知道最初的问题是什么