我正在尝试使用matcher作为表达式来查找字符串列表中的时间戳。 Ex(“[00:00:00.000]”)时间戳之前和之后有空格
我在线检查了我的正则表达式,它说它是正确的,但不适用于我的java。它只是返回false。
String word = " [00:00:00.000] ";
Pattern pattern = Pattern.compile("^\\s[[0-9:.]*]\\s");
Matcher matcher = pattern.matcher(word);
if(matcher.matches()){
//Do Stuff
else
//Do other Stuff
答案 0 :(得分:2)
//Pseudo-code
obj1[0]["AUDCAD"]["t"].push(obj2[0]["AUDCAD"]["t"]);
使用此功能。您不需要\\s*\\[[0-9:.]*\\]\\s*
。^
escape
。请参阅演示。
https://regex101.com/r/eX9gK2/11
如果您想使用时间戳
[]
并捕获\\s*\\[([0-9:.]*)\\]\\s*
答案 1 :(得分:1)
尝试:
^\\s\\[[0-9:.]*]\\s
你的正则表达式不起作用,因为你没有转义第一个[
字符,所以它被视为另一个字符类。您可以通过将时间戳关闭到组中来获取时间戳:([0-9:.]*)
,但是,如果您的时间戳始终如下所示,您可以通过以下方式获得单独的时间值:
^\\s\\[(\\d+):(\\d+):(\\d+)\\.(\\d+)*]\\s
它会给你:
用Java测试它:
public static void main(String args[]){
String word = " [00:00:00.000] ";
Pattern pattern = Pattern.compile("^\\s\\[(\\d+):(\\d+):(\\d+)\\.(\\d+)*]\\s");
Matcher matcher = pattern.matcher(word);
matcher.find();
System.out.println(matcher.group(1) + ":" + matcher.group(2) + ":" + matcher.group(3) + "." + matcher.group(4));
}
答案 2 :(得分:0)
package test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class RegexTest {
@Test
public void assert_pattern_found() {
final String word = " [00:00:00.000] ";
final Pattern pattern = Pattern.compile("^\\s\\[[0-9:.]*\\]\\s");
final Matcher matcher = pattern.matcher(word);
assertTrue(matcher.matches());
}
}