有人可以帮我编写一个java正则表达式来检索以下字符串中的值吗?
XX0001 15NOV XXX SELECTED RAX AXXXXX DXXXXXXXXX REF NBR 002 SSSS
我想提取值002. 002之前的所有字符串/字符都是固定长度,并且正确填充尾随空格(如果需要)。可以有任何字符串/数字/特殊可显示字符。
我正在寻找类似的东西......从那个位置得到002而无视之前的事情。 ?
答案 0 :(得分:0)
假设您想要在字符串结尾之前的最后一组数字,您可能想要这样做:
^.*\\d{3}\\s+.{4}$
这应该指示正则表达式引擎从字符串的开头开始匹配,匹配任何字符,然后从最后匹配3个数字,一个空格和任意4个字符。
此外,如果你有固定的尺寸和长度,你很可能会使用.substring方法,但它不那么复杂。
答案 1 :(得分:0)
用什么语言?
如果javascript:
myCode=myString.substring(56,58);
或
myCode=myString.substr(56,3);
如果PHP:
$myCode=substr($myString,56,3);
这个更简单的选项比正则表达式更可取,因为它更快。你可以使用它,因为你正在使用固定长度的字符串。
编辑:刚刚看到你的编辑引用了Java。所以在Java中:String myCode = myString.substring(56,59);
答案 2 :(得分:0)
你不需要正则表达式来做到这一点。只需使用String
方法substring
:
String myString = originalString.substring(106,109); // myString = "002"
106是开始索引,109是结束索引 - 1.要简单地获取第一个,只需在您想要获得的数字之前取原始字符串的长度,例如:
System.out.println("XX0001 15NOV XXX SELECTED RAX AXXXXX DXXXXXXXXX REF NBR ".length());
答案 3 :(得分:0)
在Java中
string.substring(56,59);