想要选择从first
到'y'之前的'x'之前的字符
的文本。
需要首先查找 '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
。 “贪婪”部分确保它找到第一个 y
之前的最后 x
。
但是,如果字符串没有y
,则这将不起作用。因此,您需要单独检查,只需使用 contains("y")
。
关于java - 用于在 char 'x' 之前选择最多 char before char 'y' 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55455892/