[英]Get substring of string by searching the string for the substring text?
[英]Searching a string for a substring
(道歉,我對c#很新)
給出以下字符串:
SELECT * FROM TABLE WHERE sDATE ='~~Date~~' AND sName = '~~Some NAME~~'
我需要從上面的字符串中提取Date
和Some 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.