根据大写或小写提取字符串

时间:2014-05-14 09:48:10

标签: regex xpath substring uppercase

鉴于,

    $string1 = "Reference: AbcDef   PO: 12345abC   line: 01";

    $string1 = "Reference: AbcDef   po: 12345abC   line: 01";

这里的想法是使用XPath和/或RegEx在“PO:”或​​“po:”之后和“line”之前提取值。

通常,我就是这样做的,substring-after(upper-case(string1), "PO:")。这将迎合PO:和po:;但这也会影响全部为大写的结果“12345ABC”。

这里的问题是,如何在不影响结果的情况下提取值。

在perl中,无论大写还是小写,都有"?i"含义。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

如果你可以使用正则表达式,我想你可以使用这样的东西

substring-after(string1, (PO:|po:))

其中正则表达式与其中一个选项匹配。如果在po:或PO:你想要匹配的内容之外,还有另外一个也匹配的子字符串。

答案 1 :(得分:0)

您可以使用fn:replace和正则表达式来提取POpo字段的值,并丢弃字符串的其余部分:

replace($string1, ".*(?:PO:|po:)\s(.*)line.*", "$1")