匹配“-aa”、“_aa”和 'ab|ab' 等词的正则表达式

Match a regular expression on words like '-aa', '_aa' and 'ab|ab'

我正在努力寻找一个正则表达式来验证 xml 文件,使用 xsd 模式对 -aa_aaab|ab 等词进行验证。当我尝试在线 tool 匹配正则表达式时,单词 ab|ab 匹配了 2 次,不知何故管道 |打破比赛。 我的正则表达式:

      <xs:attribute name="element">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:pattern value="(\w+\s*|'?\-*|\|)" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>

首先用管道测试组,所以如果第一个不匹配,它只会寻找第二个组

(\w+\|\w+)|([-_a-z]+)

你可以测试这个正则表达式 here