Regex 如何匹配由'+'-标志?

Regex 如何匹配由'+'-标志?,regex,Regex,我正在使用这个正则表达式(\(?(F[0-9]{3}+?\-)+([a-zA-Z0-9]{3}+?\)*\)?v?+/code> 我要匹配的字符串示例: F123 F123+098 F123+YYY F123+F456+890+456 F123+F456+890+-456 (F123+F456+890+456)伏(F123) (F123+F456+890+456)伏(F123+098) 我不想匹配的字符串示例: F1234+ F123+ F123+098+ F123+456789 (F12

我正在使用这个正则表达式
(\(?(F[0-9]{3}+?\-)+([a-zA-Z0-9]{3}+?\)*\)?v?+/code>

我要匹配的字符串示例:

  • F123
  • F123+098
  • F123+YYY
  • F123+F456+890+456
  • F123+F456+890+-456
  • (F123+F456+890+456)伏(F123)
  • (F123+F456+890+456)伏(F123+098)
我不想匹配的字符串示例:

  • F1234+
  • F123+
  • F123+098+
  • F123+456789
  • (F123+F456+890+456)vF123)
  • (F123+F456+890+456)伏(F123+09898)
  • (F123+F456+890+456)伏(F123+098)
我想我需要某种消极的前瞻性,以确保如果我匹配第二个组,则中间有一个
+
,如果我匹配一个新实例,则中间有一个
)v(
),但我似乎不知道如何匹配

我还想确保它只在整个输入匹配Regex时匹配


可能有帮助:

可能有一种选择是使用重复组和an来匹配不带开始括号和结束括号的零件,并将零件与v位于中间的括号相匹配

^(?:F[0-9]{3}(?:\+-?F[0-9]{3})*(?:\+-?[0-9a-zA-Z]{3})*$|\(F[0-9]{3}(?:\+-?F[0-9]{3})*(?:\+-?[0-9a-zA-Z]{3})*\)v\(F[0-9]{3}(?:\+-?F[0-9]{3})*(?:\+-?[0-9a-zA-Z]{3})*\))$
部分地

  • ^
    字符串的开头
  • (?:
    非捕获组
    • F[0-9]{3}
      匹配F和3位数字
    • (?:\+-?F[0-9]{3})*
      重复0+次a
      +
      ,可选
      -
      ,F和3位数字
    • (?:\+-?[0-9a-zA-Z]{3})*
      重复0+次a
      +
      ,可选的
      -
      和和3次所列的任何一项
  • |
    • \(
      匹配
    • F[0-9]{3}
      匹配F和3位数字
    • (?:\+-?F[0-9]{3})*
      重复0+次
      +
      ,可选
      -
      ,F和3位数字
    • (?:\+-?[0-9a-zA-Z]{3})*
      匹配0+次
      +
      ,可选
      -
      和3次任何列出的
    • \)v\(
      匹配
      )v(
    • F[0-9]{3}
      匹配F和3位数字
    • (?:\+-?F[0-9]{3})*
      匹配0+次
      +
      ,可选
      -
      ,F和3位数字
    • (?:\+-?[0-9a-zA-Z]{3})*
      匹配0+次
      +
      ,可选
      -
      和3次任何列出的
    • \)
      匹配
  • 关闭非捕获组
  • $
    字符串结尾

p>你是我的英雄,你是我的英雄,你是我的帐户,我的帐户,字母和+-我结束了:<代码>(p>你是我的英雄,你是我的英雄,你是我的帐户,我是我的英雄,你是我的英雄,你是我的帐户,你是我是我的帐户,你是我是我的,你是我是我的帐户,你是我的帐户,我是我的帐户,我的字母和+-你是我是我的帐户和+-你是我的,你是我的,你是我是我是我的,你是我是我的英雄,你是我是我的英雄,你是我是我是我的英雄,你是我是我是我是我的英雄,你是我是我的英雄,我是我是我的英雄,我是我是我的英雄,我是我是我的帐户,我是我是我的帐户,我是我是我是我的英雄,以以9]{3})*\))$
您可以根据您的要求对其进行调整。是否应该只有
-
+
或两者都有?在这种情况下,您可以使用字符类
[-+]?
来选择性地匹配两者中的一个。始终存在
+
或有时存在
+-