我现在确定如何最好地提出问题,但我相信一个例子会让它完全清楚。
当前正常演出
(?:kg)~
表示匹配字符串以“weight”(可选)开头,后跟1或2位数字,后跟“k”或“kg”。
有没有办法在没有OR(k | kg)的情况下写出表达式的最后部分? 我更喜欢它是否像
(?:mmhg)~
其中〜表示匹配此文本或作为其子集的文本,即“k”。另一个例子是
(?:m|mm|mmh|mmhg)
最后会匹配“m”,“mm”,“mmh”或“mmhg”。
显然我完全编写了“〜”符号
更新
我正在生成这些表达式,所以我绝对可以做一些事情,比如把文本分成单独的字符并构建一个“|”列表如下,但我不愿意。
let pathLayer = CAShapeLayer()
pathLayer.strokeColor = UIColor.blue.cgColor
pathLayer.lineWidth = 3.0
pathLayer.fillColor = UIColor.clear.cgColor
pathLayer.lineDashPattern = [5.0, 2.0]
pathLayer.lineDashPhase = 0
let path = PathCreator.createPath(resultPoints)
pathLayer.path = path.cgPath
答案 0 :(得分:0)
您可以使用:
^(?:weight\s?)?(\d{1,2})kg?$
kg?
匹配k
或kg
对于第二部分,您可以使用:
\bm(?:m(?:hg?)?)?\b
这将匹配m
或mm
或mmh
或mmhg
答案 1 :(得分:0)
你可以做什么,因为它似乎并不是一个你正在寻找的单位,如下所示:
^(?:weight\s?)?(\d{1,2})(?:\w+?)$
在1或2位数之后,这将匹配由字母组成的任何内容。但是,它不允许您将其与有效值进行比较。所以我会建议反对。虽然如果你最后捕获第二个括号(\w+?)$
,你可以很容易地对捕获后的第二个值进行测试,并根据第二个括号值处理第一个括号的数据。