Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式以查找XML中具有可变字符的精确长度_Xml_Regex - Fatal编程技术网

正则表达式以查找XML中具有可变字符的精确长度

正则表达式以查找XML中具有可变字符的精确长度,xml,regex,Xml,Regex,有没有一种方法可以在如下XML中的指定标记之间找到可变的固定长度字符 <Event id="2965652b-f7b7-4539-abb6-33cae0fca2d1" name="updateInfo" eventType="updateInfo"> <eventTime>2014-11-11T06:35:22Z</eventTime> <eventAttributes> <EventAttribute>

有没有一种方法可以在如下XML中的指定标记之间找到可变的固定长度字符

<Event id="2965652b-f7b7-4539-abb6-33cae0fca2d1" name="updateInfo" eventType="updateInfo">
    <eventTime>2014-11-11T06:35:22Z</eventTime>
    <eventAttributes>
      <EventAttribute>
        <name>userId</name>
        <value>9376BDA4-A187-4CFF-8A49-482A4FD514F4</value>
      </EventAttribute>
    </eventAttributes>
  </Event>
<Event id="4909eb79-f807-42f5-8281-27485ee68956" name="login" eventType="login">
    <eventTime>2014-11-11T06:35:21Z</eventTime>
    <eventAttributes>
      <EventAttribute>
        <name>userId</name>
        <value>9376BDA4-A187-4CFF-8A49-482A4FD514F4</value>
      </EventAttribute>
    </eventAttributes>
  </Event>

最后,我将这个搜索文本传递给grep命令,并尝试从文件夹中提取XML文件名,然后在groovy代码中使用
records=newxmlparser().parseText(eventFile)
来验证元素

您的正则表达式不考虑
标记前面的换行符和空格。将
\s*
放在
>之间您的问题不清楚。您使用的是什么环境/语言?应该退还什么?为什么要使用正则表达式呢?这样做的目的是什么?请提供一个预期输出的示例,并说明为什么尝试使用正则表达式而不是专用解析器解析xml。什么是可变固定长度字符?你是说长度是固定的,但字符是可变的吗?@MichaelKay是的,正确。看起来
{20}
grep
中不起作用<代码>*
正在工作。在我的例子中,我不能使用
*
,因为可能会有相同类型的事件连续发生,导致不正确的结果。因此,需要以RegexThanks为单位给出响应的字符长度。我在``中尝试了建议的解决方案,但看不到任何匹配的字符串。我应该为每条换行符添加
\s*
吗?我不明白,这里的regexr正好是你文章中的文本块,也正是我作为regex的行:……但是,是的,任何有换行符或其他空白的地方,你都需要一个
\s*
grep
默认使用不同的regex语法,你需要使用
egrep
grep-E
,这样
\s
就可以工作了。是的,你做到了。我使用了
grep H
,在此之前导致了问题<代码>grep E对我来说很好。
<Event id="2965652b-f7b7-4539-abb6-33cae0fca2d1" name="updateInfo" eventType="updateInfo"><eventTime>.{20}<\/eventTime><e...
<Event id="2965652b-f7b7-4539-abb6-33cae0fca2d1" name="updateInfo" eventType="updateInfo">
        <eventTime>2014-11-11T06:35:22Z</eventTime>
        <eventAttributes>
          <EventAttribute>
            <name>userId</name>
            <value>9376BDA4-A187-4CFF-8A49-482A4FD514F4</value>
          </EventAttribute>
        </eventAttributes>
      </Event>
<Event id="2965652b-f7b7-4539-abb6-33cae0fca2d1" name="updateInfo" eventType="updateInfo">\s*<eventTime>.{20}<\/eventTime>