用于在 char 'x' 之前选择 char 'y' 之前的 char 的正则表达式
Regex for selecting upto char before char 'x' before char 'y'
想要 select 从 first
到 the char before 'x' before 'y'
的文本。
需要先查找 'y'
,然后向后查找第一次出现的 'x'
(或查找中的最后一个 'x'
)和 select,直至 '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
。 "everything that's not a y
" 部分确保找到字符串中的第一个 y
。 "greedy" 部分确保它在第一个 y
.
之前找到 last x
但是,如果字符串没有 y
,这将不起作用。所以你需要单独检查,只需使用 contains("y")
.
试试正则表达式:^(?=.*y)([^y]*)(?=x(?=[^x]*y))
请注意,这也将满足要求abcx -> (No match, as no y)
想要 select 从 first
到 the char before 'x' before 'y'
的文本。
需要先查找 'y'
,然后向后查找第一次出现的 'x'
(或查找中的最后一个 'x'
)和 select,直至 '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
。 "everything that's not a y
" 部分确保找到字符串中的第一个 y
。 "greedy" 部分确保它在第一个 y
.
x
但是,如果字符串没有 y
,这将不起作用。所以你需要单独检查,只需使用 contains("y")
.
试试正则表达式:^(?=.*y)([^y]*)(?=x(?=[^x]*y))
请注意,这也将满足要求abcx -> (No match, as no y)