簡體   English   中英

如何使用正則表達式匹配引號中的字符串

[英]How to match string in quotes using Regex

假設我在文本文件中有以下文本

第一文

“一些文字”

“124arandom txt,不應該被解析!@

“124 Some Text”

“어떤글”

這篇文章不應該被解析

我想檢索Some Text124 Some Text어떤 글作為匹配的字符串。 文本逐行讀取。 Catch是,它必須匹配外語,如果它在引號內。

更新:我發現了一些奇怪的東西。 我正在嘗試一些隨機的東西並發現:

string s = "어떤 글"
Regex regex = new Regex("[^\"]*");
MatchCollection matches = regex.Matches(s);

匹配的count = 10並且在其中生成了一些空項(解析后的文本在索引2中)。 當我正在做Regex.Replace時,這可能就是為什么我一直得到空字符串的原因。 為什么會這樣?

如果你逐行閱讀文本,那么正則表達式

"[^"]*"

將找到所有引用的字符串,除非這些字符串可能包含"a 2\\" by 4\\" board"類的"a 2\\" by 4\\" board"類的轉義引號。

要正確匹配這些,您需要

"(?:\\.|[^"\\])*"

如果您不希望引號成為匹配項的一部分,請使用外觀斷言

(?<=")[^"]*(?=")
(?<=")(?:\\.|[^"\\])*(?=")

這些正則表達式,如C#正則表達式,可以像這樣創建:

Regex regex1 = new Regex(@"(?<="")[^\""]*(?="")");
Regex regex2 = new Regex(@"(?<="")(?:\\.|[^""\\])*(?="")");

您可以使用正則表達式,然后嘗試將其與您想要的任何文本進行匹配。 可以循環或任何你需要的。

string str = "\"your text\"";
//check for at least on char inside the qoutes
Regex r = new Regex("\".+\"");
bool ismatch = r.IsMatch(str); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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