java - 用于在 char 'x' 之前选择最多 char before char 'y' 的正则表达式

标签 java regex regex-negation

想要选择从first'y'之前的'x'之前的字符的文本。
需要首先查找 'y',然后向后查找第一次出现的 'x'(或查找中的最后一个 'x')并选择直到 'x' 之前。

示例:(输入 -> 输出)

abxabxaby -> abxab 

(直到第一次出现yabxabxaby。然后直到第一个向后x(或最后一个x)在查找中)是abxabxx之前是abxab)

12xabcyabcxay -> 12

(直到第一次出现 y 时为 12xabcy,然后第一个向后的 x12x 并且在 之前>x12)

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/

相关文章:

java - 循环遍历列表并根据数据创建 View

javascript - 检查一个字符串包含javascript中的多少个单词

python - Pandas 根据正则表达式模式列表将列添加到 df

python - 否定匹配的正则表达式模式

java - libgdx 调整带边框的图像大小

java - Apache Camel v2.12 | CXF组件|基本认证

java - UML 中的接口(interface)和抽象类聚合

html - ios 中的正则表达式提取 href url 并丢弃 anchor 标记的其余部分?

javascript - 如何替换字符串中所有但第一次出现的模式

regex - 所有以后缀结尾而不使用否定的文件