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我没有检查你的答案。我正在键入我自己的答案,并且已经发布了我的链接。你可以查看两个答案的时间戳。一旦你意识到你回答问题太晚,并且你的答案已经存在,那么只需删除你的答案,以避免问题上的重复答案。