简单的正则表达式帮助我开始

时间:2012-05-24 11:16:49

标签: regex

我正在尝试提出一个简单的正则表达式,它将寻找第一个':'后跟一个未知数量的字符串,直到'。'找到并返回之间的字符串。

实施例

test example:IWANTTHISBACK. [8909] test

结果

IWANTTHISBACK

任何帮助都会很棒

3 个答案:

答案 0 :(得分:3)

  

我正在尝试提出一个简单的正则表达式来寻找   第一个':'后跟一个未知数量的字符串,直到'。'找到了   并在其间返回字符串。

你基本上回答了自己的问题。如果你把它翻译成正则表达式,它看起来很简单:

  

表示第一个':'

:
  

后跟一个未知数量的字符串,直到'。'

[^.]* matches all non dots and stops at first dot.

所以,如果你把所有这些写在一起:

:([^.]*)

反向引用$1将包含您的字符串。

答案 1 :(得分:2)

试试这个

(?<=:)([^\.]*?)(?=\.)

<强>解释

<!--
(?<=:)([^\.]*?)(?=\.)

Options: case insensitive

Assert that the regex below can be matched, with the match ending at this position (positive lookbehind) «(?<=:)»
   Match the character “:” literally «:»
Match the regular expression below and capture its match into backreference number 1 «([^\.]*?)»
   Match any character that is NOT a . character «[^\.]*?»
      Between zero and unlimited times, as few times as possible, expanding as needed (lazy) «*?»
Assert that the regex below can be matched, starting at this position (positive lookahead) «(?=\.)»
   Match the character “.” literally «\.»
-->

答案 2 :(得分:0)

在Java中

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        Pattern pattern = Pattern.compile(":([^.]*)\\.");
        Matcher matcher = pattern.matcher("test example:IWANTTHISBACK. :abc.[8909] test");
        if (matcher.find()) {
            System.out.println(matcher.group(1));
        }
    }
}

输出:

IWANTTHISBACK