许多类似的问题已经存在,但它们并没有解决我的问题。现在,话虽如此,假设我有一个句子 - "患者被转为接受观察"我想只匹配"到 - - - - 观察"现在,如果我有"对于obs" /"用于观察"在句子里面"到 - - - - 观察"然后我不想匹配它。
我的正则表达式如下:
(\bin\b|\bto\b|\badmit\b).{0,100}(observation\b|\bobserve\b|\bobs\b)
但是当我像(?!for)那样使用负面向前看时:
(\bin\b|\bto\b|\badmit\b).{0,100}(?!(for))(observation\b|\bobserve\b|\bobs\b)
它仍然匹配一切。 我需要正则表达式完成的是它是否能够接受观察/观察/观察"它会匹配。但是,如果有"承认观察/观察/观察"那就不会匹配了。
更新:以下正则表达式几乎提供了我想要的输出。
((\bin\b|\bto\b)(?!.*for.*(?:\bobs\b|observations\b)).{0,100}(observation\b|\bobserve\b|\bobs\b))|((observation\b|\bobserve\b|\bobs\b).{0,100}(\bstatus\b|\bplace\b|time\b))|(\b(status|place[d]?|placing|admit(?:ted)?|(?:ting)?|start|time|move[d]?)\b.{0,100}(observation\b))
答案 0 :(得分:0)
您尚未指定正则表达式的风格,但如果它支持后视,请尝试
\b(in|to|admit)\b.{0,100}(?<!for\s)\b(observation|observe|obs)\b
您的否定前瞻是指检查observation
,observe
,obs
中的任何一个词都不以for
开头,这很明显他们不会#39; t;)
修改强>
好的,所以它是JS。你可以尝试类似的东西:
\b(in|to|admit|was)\b.{0,100}(?!\bfor)...\s(observation|observe|obs)\b
它只是确保关键字之前的字符不是for
。 (但它要求在单词之前至少有三个字符。)
(我已经在那里转了一下;)
答案 1 :(得分:0)
如果(\bfor\s+)?
,for
等之前有observation
个空格,并且observe
是for
,则可以var regex = /\b(in|to|admit|was)\b.{0,100}?(\bfor\s+)?(observation|observe|obs)\b/g;
const str = "late case manager feels safest to admit for obs as pt lives ...\nw pt case manager wil to admist obs 1930 pt";
var m, res=[];
while ((m = regex.exec(str)) !== null) {
if (m[2] === undefined) {
res.push(m[0]);
}
}
console.log(res);
查看匹配,丢弃匹配,否则抓住它:
SELECT STRING_AGG(TransDateString,',')
FROM #dataSet c
ORDER BY TransDate
&#13;