簡體   English   中英

在字符串中搜索子字符串

[英]Searching a string for a substring

(道歉,我對c#很新)

給出以下字符串:

SELECT * FROM TABLE WHERE sDATE ='~~Date~~' AND sName = '~~Some NAME~~'

我需要從上面的字符串中提取DateSome NAME到一個數組中。

  • ~~里面並不總是Date和Some NAME
  • 字符串中可能只有一個~~x~~ ,可能有兩個或更多
  • ~~x~~可以是任何長度,可以包含數字,字母和空格
  • ~~x~~總是以~~開始和結束
  • ~~x~~可能也可能不在引號中

對於給定的字符串,我想獲得找到的值的數組。 我可以~~Date~~Date

我認為這可能是一個正則表達式的情況。 我看過.Split.IndexOf.Contains但是沒有一個能讓我得到我正在尋找的東西,因為我並不總是在尋找相同的子串。

更新:

這不是嚴格的SQL解析,這只是一個簡單的例子。 字符串也可以

My name is ~~Some NAME~~ and I'm hunting for some help

給出你的描述,類似的東西(並假設你想要捕獲的字符串中沒有~~ ):

~~(.*?)~~

會給你一個捕捉組中的一對~~之間的文字。 你可以改變. 如果你想要更嚴格的限制。

示例: https//dotnetfiddle.net/t6i7rx

    var s = "SELECT * FROM TABLE WHERE sDATE ='~~Date~~' AND sName = '~~Some NAME~~'";
    Regex r = new Regex(@"~~(.*?)~~");
    foreach (Match m in r.Matches(s)) {
        Console.WriteLine(m.Groups[1]);
    }

輸出:

Date
Some NAME

注意*?的重要性*? 而不僅僅是* *本身就是貪婪的,並且會盡可能地匹配。 所以它會返回Date~~' AND sName = '~~Some NAME因為它會占用第一個和最后一個~~之間的所有內容。 添加? 讓它變得懶惰。

暫無
暫無

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

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