Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java reg模式捕获多个集合_Java_Regex - Fatal编程技术网

Java reg模式捕获多个集合

Java reg模式捕获多个集合,java,regex,Java,Regex,我有一个字符串值X-Y-Z-a 从下面的模式([a-zA-Z]-[a-zA-Z]),我能够捕获集合X-Y和Z-a。但这还不够 Q:是否可以构造一个正则表达式来捕获集合X-Y、Y-Z和Z-a?是的,可以使用正向前瞻正则表达式代替匹配的文本: (?=([a-zA-Z]-[a-zA-Z])) 对于您的输入“X-Y-Z-A”,它提供以下3个匹配项: “X-Y” “Y-Z” “Z-A” 是的,这是可能的,使用正向前瞻正则表达式代替匹配文本: (?=([a-zA-Z]-[a-zA-Z])) 对于您的输入

我有一个字符串值
X-Y-Z-a

从下面的模式
([a-zA-Z]-[a-zA-Z])
,我能够捕获集合
X-Y
Z-a
。但这还不够


Q:是否可以构造一个正则表达式来捕获集合
X-Y
Y-Z
Z-a

是的,可以使用正向前瞻正则表达式代替匹配的文本:

(?=([a-zA-Z]-[a-zA-Z]))
对于您的输入
“X-Y-Z-A”
,它提供以下3个匹配项:

  • “X-Y”
  • “Y-Z”
  • “Z-A”

  • 是的,这是可能的,使用正向前瞻正则表达式代替匹配文本:

    (?=([a-zA-Z]-[a-zA-Z]))
    
    对于您的输入
    “X-Y-Z-A”
    ,它提供以下3个匹配项:

  • “X-Y”
  • “Y-Z”
  • “Z-A”

  • 要捕获重叠字符,需要将捕获组包含在“向后看”或“向前看”中

    (?<=([A-Za-z]-[A-Za-z]))
    

    (?要捕获重叠字符,您需要将捕获组包含在lookback或lookahead中

    (?<=([A-Za-z]-[A-Za-z]))
    
    (?
    试试这个。看演示

    试试这个。看演示


    \w
    还包括
    0-9
    。仅仅将
    [a-zA-Z]
    更改为
    \w
    并不意味着你的正则表达式不是从下面我的正则表达式借来的。@Tendious:你还需要理解
    \w
    [a-zA-Z]
    \w
    意味着
    [a-zA-z0-9]
    而根据您的问题,您希望捕获
    [A-Za-z]
    @anubhava我没有检查你的ans。我正在键入我自己的答案,并且已经发布了我的链接。你可以查看两个答案的时间戳。一旦你意识到你回答问题太晚了,并且你的答案已经存在,那么只需删除你的答案,以避免问题上的重复答案。
    \w
    包括
    0-9
    _也是。仅仅将
    [a-zA-Z]
    更改为
    \w
    并不意味着你的正则表达式不是从我下面借用的。@Tendious:你还需要理解
    \w
    [a-zA-Z]
    之间的这个重要区别
    \w
    意味着
    [a-zA-z0-9]
    ,而根据你的问题,你想捕捉
    [A-Za-z]
    @anubhava我没有检查你的答案。我正在键入我自己的答案,并且已经发布了我的链接。你可以查看两个答案的时间戳。一旦你意识到你回答问题太晚,并且你的答案已经存在,那么只需删除你的答案,以避免问题上的重复答案。