我的字符串类似"smth 2sg. smth"
,有时候"smth 2sg.| smth."
。
如果字符串不包含"2sg."
,我应该使用哪个掩码来选择"|"
,如果字符串包含"|"
则不选择任何内容?
答案 0 :(得分:1)
这样的事可能适合你:
(\d*sg\.)(?!\|)
它假设有(或没有)数字后跟sg.
而后跟|
。
答案 1 :(得分:1)
我有两种方法。他们都使用了一种叫做否定前瞻的东西,就像这样使用:
var arrayOfJSON = ...
var arrayOfObjects = arrayOfJSON.map(function (jsonString){
return JSON.parse(jsonString)
})
var jsonStringWithAllObjects = JSON.stringify(arrayOfObjects)
如果将其插入RegEx,则表示如果存在(?!data)
,则RegEx将不匹配。
可以找到关于否定前瞻的更多信息here
抓住data
试试这个RegEx:
2sg.
如果号码长度超过1位,请使用(\dsg\.)(?!\|)
工作原理:
(\d+...
匹配整个字符串并捕获( # To capture (2sg.)
\d # Digit (2)
sg # (sg)
\. # . (Dot)
)
(?!\|) # Do not match if contains |
试试这个RegEx:
2sg.
如果号码长度超过1位,请使用^\w+\s*(\dsg\.)(?!\|)\s*\w+\.?$
工作原理:
(\d+sg...
答案 2 :(得分:0)
^.*(\dsg\.)[^\|]*$
说明:
^ : starts from the beginning of the string
.* : accepts any number of initial characters (even nothing)
(\dsg\.) : looks for the group of digit + "sg."
[^\|]* : considers any number of following characters except for |
$ : stops at the end of the string
您现在可以通过从正则表达式中获取第一个组来选择字符串
答案 3 :(得分:0)