我正在尝试提出一个简单的正则表达式,它将寻找第一个':'后跟一个未知数量的字符串,直到'。'找到并返回之间的字符串。
实施例
test example:IWANTTHISBACK. [8909] test
结果
IWANTTHISBACK
任何帮助都会很棒
答案 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