我需要一些正则表达式的帮助。
我有一个AB。*模式,这个模式应该匹配字符串 比如AB.CD AB.CDX(AB.whatever).and 等等。但它不应该匹配 字符串如AB,AB.CD.CD,AB.CD。 AB.CD.CD即是遇到的 字符串中的第二个点。什么是 正则表达式?
我有一个AB模式。**,这个模式应该匹配字符串 AB,AB.CD.CD,AB.CD。 AB.CD.CD但不是 字符串如AB.CD,AB.CDX, AB.whatever什么是正则表达式 此
非常感谢。
答案 0 :(得分:2)
看起来你的整体不是正则表达式。 Dot匹配任何char,*使前一个元素匹配任何0次。
1)AB\.[^.]*
转义第一个点,使其与文字点匹配,然后匹配除点之外的任何字符,任意次。
2)"^(AB)|(AB\.[^.]*\.[^.]*$"
这与AB
或AB
后跟.<stuff>.<stuff>
答案 1 :(得分:2)
http://www.regular-expressions.info/包含许多有关正则表达式学习的有用信息。
答案 2 :(得分:1)
如果您的正则表达式引擎支持负向前瞻,您可以尝试类似:
^AB\.[^.]+$
^AB(?!\.[^.]+$)
(或
^AB\.[^.]*$
^AB(?!\.[^.]*$)
如果你想允许AB。 )
答案 3 :(得分:0)
我发现你的问题并不完全清楚;如果我错了,请在这里发表评论(或编辑你的问题,如果你不能添加评论),但我认为你正在寻找的是:
1)匹配字符串“AB.AnyTextHereWithoutDots”但不匹配“AB”或“AB.foo”。等
如果是这样,匹配的正则表达式将是:
"^AB\.[^.]*$"
2)将“AB”或“AB.something.something”与无或两个或更多点匹配
如果是这样,匹配的正则表达式将是:
"^AB(\..*\..*)?$" or "'^AB\(\..*\..*\)\?" (depending on the nature of your regex engine)
与{glo}匹配的Douglas suggests可能会更容易。
和spdenne suggests一样,找到一个很好的正则表达式引用。
答案 4 :(得分:0)
我在vim中试过这个。以下是示例数据:
AB.CD
AB.CDX
AB.whatever
AB
AB.CD.CD
AB.CD.
AB.CD.CD
这是我的正则表达式
这会捕获以AB开头的所有行,然后需要一个文字点,然后过滤掉所有第二个点的行。
^ AB \。[^。] * $
这会捕获所有只是AB的行(管道前的部分)或以AB开头的行,后面跟着两个文字点(用反斜杠转义)
^ AB $ \ | ^ AB \ .. \ .. $