帮助正则表达式模式

时间:2009-01-28 07:07:40

标签: regex

我需要一些正则表达式的帮助。

  1. 我有一个AB。*模式,这个模式应该匹配字符串 比如AB.CD AB.CDX(AB.whatever).and 等等。但它不应该匹配 字符串如AB,AB.CD.CD,AB.CD。 AB.CD.CD即是遇到的 字符串中的第二个点。什么是 正则表达式?

  2. 我有一个AB模式。**,这个模式应该匹配字符串 AB,AB.CD.CD,AB.CD。 AB.CD.CD但不是 字符串如AB.CD,AB.CDX, AB.whatever什么是正则表达式 此

  3. 非常感谢。

5 个答案:

答案 0 :(得分:2)

看起来你的整体不是正则表达式。 Dot匹配任何char,*使前一个元素匹配任何0次。

1)AB\.[^.]* 转义第一个点,使其与文字点匹配,然后匹配除点之外的任何字符,任意次。

2)"^(AB)|(AB\.[^.]*\.[^.]*$" 这与ABAB后跟.<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

这是我的正则表达式

  1. 这会捕获以AB开头的所有行,然后需要一个文字点,然后过滤掉所有第二个点的行。

    ^ AB \。[^。] * $

  2. 这会捕获所有只是AB的行(管道前的部分)或以AB开头的行,后面跟着两个文字点(用反斜杠转义)

    ^ AB $ \ | ^ AB \ .. \ .. $