Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式的Java模式_Java_Regex - Fatal编程技术网

正则表达式的Java模式

正则表达式的Java模式,java,regex,Java,Regex,我有一个2列tsv文件,其中第1列有 1-FN3Z1-206329557431 1-FN411-153115736976 我试图删除值的前两部分(即提取206329557431和153115736976)。我使用了在线正则表达式工具来生成模式 图案 “*?\\d+.*?\\d+.*(\\d+)”和“*?\\d+.*?\\d+.*?\\d+.*(\\d+)” 他们独立地工作得很好。我试图寻找一种组合正则表达式模式。任何有关如何执行此操作的指针。如果TSV文件中的字符串都具有相同的宽度和模式,则可

我有一个2列tsv文件,其中第1列有

1-FN3Z1-206329557431
1-FN411-153115736976
我试图删除值的前两部分(即提取
206329557431
153115736976
)。我使用了在线正则表达式工具来生成模式

图案

“*?\\d+.*?\\d+.*(\\d+)”
“*?\\d+.*?\\d+.*?\\d+.*(\\d+)”


他们独立地工作得很好。我试图寻找一种组合正则表达式模式。任何有关如何执行此操作的指针。

如果TSV文件中的字符串都具有相同的宽度和模式,则可以在此处使用子字符串:

String tsv = "1-FN3Z1-206329557431";
System.out.println(tsv.substring(8));

如果TSV文件中的字符串都具有相同的宽度和模式,则可以在此处使用子字符串:

String tsv = "1-FN3Z1-206329557431";
System.out.println(tsv.substring(8));

为什么不使用
split
例如:

String spl = "1-FN411-153115736976".split("-")[2];
@Test
public void test() {
    String test = "1-FN3Z1-206329557431    1-FN411-153115736976";

    String result = test.replaceAll(".-.{5}-", "");

    assertEquals("206329557431    153115736976", result);
}
如果您想要一个正则表达式,可以使用
(.*?-){2}(.*)
,这意味着在第二个
-
之后获取所有内容

输出

206329557431
153115736976

为什么不使用
split
例如:

String spl = "1-FN411-153115736976".split("-")[2];
@Test
public void test() {
    String test = "1-FN3Z1-206329557431    1-FN411-153115736976";

    String result = test.replaceAll(".-.{5}-", "");

    assertEquals("206329557431    153115736976", result);
}
如果您想要一个正则表达式,可以使用
(.*?-){2}(.*)
,这意味着在第二个
-
之后获取所有内容

输出

206329557431
153115736976

这个regexp怎么样:
-。{5}-
看起来可以匹配所有语句,但它取决于您的格式

以下是Java代码示例:

String spl = "1-FN411-153115736976".split("-")[2];
@Test
public void test() {
    String test = "1-FN3Z1-206329557431    1-FN411-153115736976";

    String result = test.replaceAll(".-.{5}-", "");

    assertEquals("206329557431    153115736976", result);
}

这个regexp怎么样:
-。{5}-
看起来可以匹配所有语句,但它取决于您的格式

以下是Java代码示例:

String spl = "1-FN411-153115736976".split("-")[2];
@Test
public void test() {
    String test = "1-FN3Z1-206329557431    1-FN411-153115736976";

    String result = test.replaceAll(".-.{5}-", "");

    assertEquals("206329557431    153115736976", result);
}

你只是想要第二个连字符之后的所有内容吗?是否只想跳过前8个字符?什么精确定义了要捕获的零件?
String str=“1-FN3Z1-206329557431”;str.substring(str.lastIndexOf(“-”)是否只需要在第二个连字符后添加所有内容?是否只想跳过前8个字符?什么精确定义了要捕获的零件?
String str=“1-FN3Z1-206329557431”;str.substring(str.lastIndexOf(“-”)