繁体   English   中英

正则表达式,用于在字符“ y”之前选择最多在字符“ x”之前的字符

[英]Regex for selecting upto char before char 'x' before char 'y'

要选择从文本中firstthe char before 'x' before 'y'
需要先查找'y'然后向后查找首次出现的'x' (或查找中的最后一个'x' ),并选择直到该'x'之前。

示例:(输入->输出)

abxabxaby -> abxab 

(直到y的第一个出现是abxabxaby 。然后直到第一个向后的x (或找到的最后一个x )是abxabx而在x之前是abxab

12xabcyabcxay -> 12

y第一次出现是12xabcy ,然后第一个向后的x12xx之前是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM