单个正则表达式查找两个字符串之间的字符串或仅以单个字符串开头

时间:2017-03-03 07:29:27

标签: java regex

我有像https://example.com?id=iuyu1223-uhs12&event=update这样的java字符串 所以我想在id&之间添加字符串,包括id&。但在某些情况下,&可能不会出现https://example.com?id=iuyu1223-uhs12,因此需要选择完整的字符串直到结束。我正在使用正则表达式(SAAS_COMMON_BASE_TOKEN_ID.*?&)。它使用第一个字符串,但第二个字符串失败。我们可以拥有正则表达式或条件,以便获得id=iuyu1223-uhs12&id=iuyu1223-uhs12

之类的结果

2 个答案:

答案 0 :(得分:3)

您可以使用此正则表达式捕获id=...后跟&或行结束的值:

(?<=[?&])id=[^&]*(?:&|$)

RegEx Demo

  • (?<=[?&])?
  • 之前断言我们有&id=
  • id=[^&]*将匹配id=后跟0个或多个字符,直至点击&
  • (?:&|$)匹配&或第一行

完全匹配将是:

  1. id=iuyu1223-uhs12& - 案例I
  2. id=iuyu1223-uhs12 - 案例II

答案 1 :(得分:1)

您可以使用

id=[^&]*&?

DEMO

  1. id=我们要求的密钥
  2. [^&]*捕获跟随&符号&后的所有内容。
  3. &?如果&符号跟随,则捕获它,否则不要。 ?表示它是可选的。