正则表达式的Java模式
我有一个2列tsv文件,其中第1列有正则表达式的Java模式,java,regex,Java,Regex,我有一个2列tsv文件,其中第1列有 1-FN3Z1-206329557431 1-FN411-153115736976 我试图删除值的前两部分(即提取206329557431和153115736976)。我使用了在线正则表达式工具来生成模式 图案 “*?\\d+.*?\\d+.*(\\d+)”和“*?\\d+.*?\\d+.*?\\d+.*(\\d+)” 他们独立地工作得很好。我试图寻找一种组合正则表达式模式。任何有关如何执行此操作的指针。如果TSV文件中的字符串都具有相同的宽度和模式,则可
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(“-”)如果我必须把它放在正则表达式规则中,我会怎么做呢。你提议的那一个肯定行得通。我只是想了解如何编写正则表达式patterns@Betafish更新您的问题,并告诉我们TSV字符串可能是什么样子的规则。然后可以写出一个精确的模式。如果它们都是固定宽度的,那么我建议在这里只使用子字符串;你不需要正则表达式。如果我必须把它放在正则表达式规则中,你会怎么做呢。你提议的那一个肯定行得通。我只是想了解如何编写正则表达式patterns@Betafish更新您的问题,并告诉我们TSV字符串可能是什么样子的规则。然后可以写出一个精确的模式。如果它们都是固定宽度的,那么我建议在这里只使用子字符串;你不需要正则表达式。