在 java 中查找以 'JD' 固定字长开头的单词的正则表达式
Regular Expression to find a word that starts with 'JD' fixed word length, in java
我不是正则表达式专家,需要您帮助解决以下问题。
我需要从包含以 JD 开头的字母的字符串中找到单词,单词的长度是已知的,即 20 .
对于这种情况,假设 String 是 "Your shipment 6016499344 was delivered at ABC JD014600001678885621 Piece ID"
.
您可以尝试使用以下带有模式和匹配器的正则表达式 类。
"\bJD\w{18}\b"
\b
匹配单词字符和非单词字符(反之亦然)
示例:
String s = "Your shipment 6016499344 was delivered at ABC JD014600001678885621 Piece ID";
Matcher m = Pattern.compile("\bJD\w{18}\b").matcher(s);
while(m.find())
{
System.out.println(m.group());
}
或
String s = "Your shipment 6016499344 was delivered at ABC JD014600001678885621 Piece ID";
Matcher m = Pattern.compile("(?<!\S)JD[A-Za-z\d]{18}(?!\S)").matcher(s);
while(m.find())
{
System.out.println(m.group());
}
输出:
JD014600001678885621
您可以使用:
public static void main(String[] args) {
String s = "Your shipment 6016499344 was delivered at ABC JD014600001678885621 Piece ID";
System.out.println(s.replaceAll(".*(JD\d{18}).*", ""));
}
O/P :
JD014600001678885621
您可以使用简单的 \bJD[a-zA-Z0-9]{18}\b
正则表达式。
String rx = "\bJD[a-zA-Z0-9]{18}\b";
解释:
\b
- 边界
JD
- 第一个条件 - 这些字母必须匹配
[a-zA-Z0-9]{18}
- 从 a 到 z(不区分大小写)的任何拉丁字符或从 0 到 9 的数字
\b
- 边界
您需要使用单词边界来仅匹配以 "JD" 开头的文本部分。
如果您在一篇文章中有多个 JD 字符串,您可以像这样匹配它们(参见 sample program here):
public static void main(String []args){
String str = "Your shipment 6016499344 was delivered at ABC JD014600001678885621 Piece ID\nYour shipment 918947344 was delivered at ABC JD024900901978985929 Piece ID";
String rx = "(?<=^|\b)JD[a-zA-Z0-9]{18}";
Pattern ptrn = Pattern.compile(rx);
Matcher m = ptrn.matcher(str);
while (m.find()) {
System.out.println(m.group(0));
}
}
使用 Matcher
对象并使用 Matcher.find()
在输入字符串中查找匹配项:
Pattern p = Pattern.compile("\bJD\d{18}\b");
Matcher m = p.matcher("Your shipment 6016499344 was delivered at ABC JD014600001678885621 Piece ID");
m.find();
System.out.println(m.group());
我不是正则表达式专家,需要您帮助解决以下问题。
我需要从包含以 JD 开头的字母的字符串中找到单词,单词的长度是已知的,即 20 .
对于这种情况,假设 String 是 "Your shipment 6016499344 was delivered at ABC JD014600001678885621 Piece ID"
.
您可以尝试使用以下带有模式和匹配器的正则表达式 类。
"\bJD\w{18}\b"
\b
匹配单词字符和非单词字符(反之亦然)
示例:
String s = "Your shipment 6016499344 was delivered at ABC JD014600001678885621 Piece ID";
Matcher m = Pattern.compile("\bJD\w{18}\b").matcher(s);
while(m.find())
{
System.out.println(m.group());
}
或
String s = "Your shipment 6016499344 was delivered at ABC JD014600001678885621 Piece ID";
Matcher m = Pattern.compile("(?<!\S)JD[A-Za-z\d]{18}(?!\S)").matcher(s);
while(m.find())
{
System.out.println(m.group());
}
输出:
JD014600001678885621
您可以使用:
public static void main(String[] args) {
String s = "Your shipment 6016499344 was delivered at ABC JD014600001678885621 Piece ID";
System.out.println(s.replaceAll(".*(JD\d{18}).*", ""));
}
O/P :
JD014600001678885621
您可以使用简单的 \bJD[a-zA-Z0-9]{18}\b
正则表达式。
String rx = "\bJD[a-zA-Z0-9]{18}\b";
解释:
\b
- 边界JD
- 第一个条件 - 这些字母必须匹配[a-zA-Z0-9]{18}
- 从 a 到 z(不区分大小写)的任何拉丁字符或从 0 到 9 的数字\b
- 边界
您需要使用单词边界来仅匹配以 "JD" 开头的文本部分。
如果您在一篇文章中有多个 JD 字符串,您可以像这样匹配它们(参见 sample program here):
public static void main(String []args){
String str = "Your shipment 6016499344 was delivered at ABC JD014600001678885621 Piece ID\nYour shipment 918947344 was delivered at ABC JD024900901978985929 Piece ID";
String rx = "(?<=^|\b)JD[a-zA-Z0-9]{18}";
Pattern ptrn = Pattern.compile(rx);
Matcher m = ptrn.matcher(str);
while (m.find()) {
System.out.println(m.group(0));
}
}
使用 Matcher
对象并使用 Matcher.find()
在输入字符串中查找匹配项:
Pattern p = Pattern.compile("\bJD\d{18}\b");
Matcher m = p.matcher("Your shipment 6016499344 was delivered at ABC JD014600001678885621 Piece ID");
m.find();
System.out.println(m.group());