想要从first
到the char before 'x' before 'y'
选择文字。
需要首先寻找'y'
然后向后看第一次出现'x'
(或者找到最后的'x'
)并选择在那之前的'x'
。
示例:(输入 - >输出)
abxabxaby -> abxab
(直到y
的第一次出现是abxabxaby
。然后第一次向后x
(或发现的最后x
)是abxabx
并且在x
之前是abxab
)
12xabcyabcxay -> 12
(第一次出现的y
是12xabcy
,然后第一次落后的x
是12x
,之前x
是12
)
abcxy -> abc
(同样的规则.abcxy
,然后abcx
所以abc
)
abcx -> (No match, as no y)
abcy -> (No match, as no x)
abcyx -> (No match, not in correct order)
你可以使用这个正则表达式:
^[^y]*(?=x)
它找到了所有不是y
的贪婪,直到它看到x
。 “所有不是y
”的部分确保它找到字符串中的第一个y
。而“贪婪”部分确保它在第一个x
之前找到了最后一个y
。
但是,如果字符串没有y
,这将不起作用。所以你需要单独检查,只需使用contains("y")
。