用于字符串模式的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知道最初的问题是什么