【发布时间】:2015-02-26 11:13:27
【问题描述】:
短版: 如何在更长的、可能重复的模式中匹配单个特定字符或什么都不匹配?
加长版: 我正在形成一个正则表达式来计算字符串'word'在具有特定格式的字符串中的出现; 一个连字符后跟一个整数(任意长度),然后是一个连字符,后跟一个字符串“word”,然后是一个连字符,可能会重复。 例如
'-0-word-'(1 个匹配项)
'-10-word-'(1 个匹配项)
'-999-word-'(1 个匹配项)
'-1-word-1-word-'(2 个匹配项)
'-1-word-1-word-222-word-' (3 个匹配项)等
如果模式重复,那么我认为前导连字符必须是可选的,因为它已经是前一个匹配的尾随连字符。
到目前为止,我想出的最好的是;
[-]?\d+-word-
给出 3 个匹配项
'-1-word-1-word-222-word-'
但它也提供了 3 个匹配项
'-1-word-1-word-X222-word-'
因为前导连字符是可选的,并且“X”被忽略。我希望前导连字符只是一个连字符或什么都没有。如果格式不正确,我想确保整个字符串被拒绝(不匹配)。
感谢您的帮助!
【问题讨论】:
-
以上是准确的输入吗?
-
' 不是匹配项或字符串的一部分。只是写字符串时的习惯!谢谢。