簡體   English   中英

使用正則表達式提取單詞

[英]Extract words using regex

我有一個字符串查詢,我想匹配並提取特定單詞。 當我有這個詞word.EXACT提取這個詞的容器時

MESH.EXACT("blood glucose monitoring")提取單詞"blood glucose monitoring"

  • words.exact(“ N-Words”)->結果"N-Words"
  • words.exact(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" /> 

嗨,我相信這會起作用:

.EXACT\\((.*?)\\)

工作示例: https : //regex101.com/r/uQj2vv/2/

這是一個可執行的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM