2016年10月23日上午10:00
从上面的字符串我需要捕获前3个字母。
然后忽略所有内容,直到第一个单词结束。
最后捕捉其他一切。
最终输出应匹配为 - 2016年10月23日上午10:00
答案 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.
感谢。