【问题标题】:searching regex for zero to n and zero to one在正则表达式中搜索零到 n 和零到一
【发布时间】:2017-02-16 10:27:05
【问题描述】:

我想解析一个字符串

  • 一个字符出现零到多次
  • 后跟零次或一次出现另一个字符

有效示例(x = 除 A 或 B 之外的任何其他字符,此时没有数字过滤)

xAxBx
xAxAxBx
x
xB
xBx

无效示例

xBxAx
xAxBxAx
xAxBxBx
Ax
A

“某物”后跟“包含零个或多个“A”的事物”后跟“包含零个或一个“B”的事物”。

背景是数字格式的一些自动检测(零或一些组分隔符后跟零或一个小数分隔符,我知道我必须为 A 或 B 转义点或空格)

我正在http://regexr.com/ 玩,但到目前为止我还没有得到它...

更新(2)

试图更好/更简短地描述我的模式:

  • A 或 B 以外的东西
  • 重复:A 后跟除 A 或 B 之外的其他内容
  • 没有或一个 B 后跟除 A 以外的其他内容或什么都没有

所以字符串可能以 B 结尾,但不以 A 或 B 开头,并且 A 后面不能跟着 A 或 B。

更新(3)

有图案

^[^AB]+(A[^AB]*)*(B[^AB]*)?$
  • 字符串可能以 A 结尾(如在 xxxAxxAAAxxxAxxxxA 中)
  • 多个 A 可以站在一起(也像在 xxxAxxAAAxxxAxxxxA 中一样)

该模式适用于

  • 开头没有A或B
  • As 之后只有一个 B

(在http://regexr.com/ 测试)

【问题讨论】:

  • 那么,在 regexr.com 上最接近的尝试是什么?
  • 你想要一个真/假结果还是提取那些字符?你确定你需要/想要正则表达式吗?
  • 只是真/假,这是在深入研究字符串之前的快速预检查(支持较旧的内部 api)。当前尝试是“([^AB].*[A*])”,表示“后跟零个或多个 As”
  • xA 和 xAx 有效吗?
  • @Niitaku 是的,确实如此

标签: regex


【解决方案1】:
//"^[^AB]+(A[^AB]*)*(B[^AB]*)*$"
//"^[^AB]+(A[^AB]*)*(B[^AB]*)?$"
  "^[^AB]+(A[^AB]+)*(B[^AB]*)?$"

【讨论】:

  • 谢谢。但根据regexr.com 多个B 是可能的。我会尝试更好地描述我在问题中的模式。
  • 已更正,最后一组使用 ? 而不是 *。
  • 谢谢。我仍然必须用模式反映我的问题更新,但它是一个很好的模板。如果没有“完美模式”出现在另一个答案中,我今天会为你投票(这里是下午 1:15):-)
  • 如果你有一个反例这不起作用,请将其添加到问题中。
  • 顺便说一句:抱歉我的废话评论,“upvoted”和“answered”是不同的东西,所以我支持你的帮助,非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多