正则表达式 - 匹配具有不同匹配模式的字母

时间:2016-03-23 12:55:59

标签: java regex

2016年10月23日上午10:00

从上面的字符串我需要捕获前3个字母。

然后忽略所有内容,直到第一个单词结束。

最后捕捉其他一切。

最终输出应匹配为 - 2016年10月23日上午10:00

4 个答案:

答案 0 :(得分:1)

您可以尝试以下模式。 $1是第一个单词的前3个字母; $2是其余部分; $3是字符串的其余部分。

String input = "October 23 2016 at 10:00 AM";
System.out.println(input.replace("^([A-Za-z]{3})([^ ]*)(.*)$", "$1$3"));

输出:

Oct 23 2016 at 10:00 AM

答案 1 :(得分:0)

string date = "October 23 2016 at 10:00 AM";
var result = Regex.Replace(date, @"(\w{3})\w*( \d+ \d+ at \d+:\d+ \w{2})","$1$2");

答案 2 :(得分:0)

此模式将匹配,并为您提供两个捕获组,用于提取所需的部分。

^(.{3})(?:.*?\b)(.*)$

模式的每个部分都是documented in the Java API

我为你要丢弃的部分使用了非捕获组,并且使用了非贪婪匹配,因此它不匹配太多字符。我将模式锚定到输入的开头和结尾。但是,我并没有限制性地使用我匹配的字符:任何字符而不仅仅是字母,数字或特定的字符集。

答案 3 :(得分:0)

这对我有用......

s/^([A-Za-z]{3})[A-Za-z]*(.*)$/\1\2/g.

感谢。

相关问题