[英]Regex for selecting upto char before char 'x' before char 'y'
要选择从文本中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")
。
试试正则表达式: ^(?=.*y)([^y]*)(?=x(?=[^x]*y))
请注意,这也将满足abcx -> (No match, as no y)
的要求abcx -> (No match, as no y)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.