[英]Extract words using regex
我有一個字符串查詢,我想匹配並提取特定單詞。 當我有這個詞word.EXACT
提取這個詞的容器時
像MESH.EXACT("blood glucose monitoring")
提取單詞"blood glucose monitoring"
"N-Words"
N-Words
Query_Input= (EMB.EXACT("insulin treatment")) and (MESH.EXACT("blood glucose monitoring")) OR "Self-Monitoring of Blood Glucose”
輸出需要像這樣
Query_out = "insulin treatment" "blood glucose monitoring" "Self-Monitoring of Blood Glucose”
這個演示有我的正則表達式和我的正則表達式: https : //regex101.com/r/rqpmXr/15
您可以這樣做:
(?<=\w\.EXACT\()[^)]+
參見正則表達式演示 。 僅當在\\w\\.EXACT(
之前[^)]+
時,才\\w\\.EXACT(
括號[^)]+
任何字符。
如果您想要替換,則可以捕獲上面的匹配,並使用\\1
(請注意尾隨空格)進行替換:
.*(?<=\w\.EXACT\()([^)]+).*\n|.*
如此處所示: https : //regex101.com/r/BS3nwr/4
編輯:正如在其中一條評論中引起我注意的那樣,某些Web瀏覽器不支持向后看( ?<=
),因此您可以使用(請注意,此regex比上一個更慢(需要更多步驟)):
\w+\.EXACT\(([^)]+).*\n|.*?
您可以使用
/\w+\.EXACT\(([^)]*)\)/g
並替換為$1
(占組1值的占位符)。 參見regex演示 。
圖案細節
\\w+
-1個或多個字字符 \\.EXACT\\(
-文字.EXACT(
子字符串 ([^)]*)
-第1組:除)
之外的任何0+個字符(如果需要確保您停留在(...)
1套內,則可以使用[^()]*
\\)
-a )
字符。 參見JS演示:
var s = 'MESH.EXACT("blood glucose monitoring") words tt.EXACT("blood glucose monitoring") '; var rx = /\\w+\\.EXACT\\(([^)]*)\\)/g; document.querySelector("#result").innerHTML = s.replace(rx, "$1");
<div id="result" />
這是一個可執行的Javascript示例,該示例從指定的輸入中提取指定的輸出:
let input = "(EMB.EXACT(\\"insulin treatment\\")) and (MESH.EXACT(\\"blood glucose monitoring\\")) OR \\"Self-Monitoring of Blood Glucose\\""; let re = /(?:EXACT\\(("[^"]+")\\)|OR\\s*("[^"]+"))/g; let Query_out = []; while ((match = re.exec(input)) !== null) { Query_out.push(match[1] ? match[1] : match[2]); } console.log(Query_out.join(" "));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.