正则表达式帮助 - 从忽略先前内容的字符串中提取值

时间:2011-12-12 16:38:42

标签: java regex

有人可以帮我编写一个java正则表达式来检索以下字符串中的值吗?

XX0001  15NOV XXX SELECTED RAX                                       AXXXXX DXXXXXXXXX           REF NBR  002            SSSS 

我想提取值002. 002之前的所有字符串/字符都是固定长度,并且正确填充尾随空格(如果需要)。可以有任何字符串/数字/特殊可显示字符。

我正在寻找类似的东西......从那个位置得到002而无视之前的事情。 ?

4 个答案:

答案 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);