[英]c# String filtering and split with regex match
我正在嘗試使用正則表達式過濾字符串,但是我對正則表達式並不熟悉,因此我需要一點幫助。 我還需要檢查字符串是否包含特定的正則表達式部分,例如輸入波紋管的示例:
輸入(字符串):
"<value1;127.0.0.1:20000;value2;value3>Lorem ipsum dolor sit amet!"
如果存在,請返回以下值:
string val1 = ????; //can't be null or empty, must be at least 3 chars/ints
string val2 = ????; //can be empty string
string val3 = ????; //can be empty string
string ipaddress = ????; // can't be empty
string text = ????; //can be empty string
否則,如果不存在,則僅返回“ lorem ipsum ...”文本:
string text = ????; //can be empty string
所以首先我需要檢查特定部分 以完整字符串存在。 字符串可以沒有該部分。
可以請人解釋一下我該怎么做嗎?
編輯:( 請不要判斷,我對正則表達式真的很不好)這是我嘗試過的:
private static bool ifContain(string a)
{
return Regex.IsMatch(a, @"([a-zA-Z0-9]*)\;([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\:[0-9]{5})([a-zA-Z0-9*)\;([a-zA-Z0-9]*)\;([<a-zA-Z0-9]*)");
}
without
Regex的丑陋方式:
var str = "<value1;127.0.0.1:20000;value2;value3>Lorem ipsum dolor sit amet!";
var split = str.Split(';');
var split2 = split[3].Split('>');
var val1 = split[0].Split('<')[1];
var ip = split[1];
var val2 = split[2];
var val3 = split2[0];
var text = split2[1];
如果由於某種原因不存在這些值中的任何一個,則可以稍后使用string.IsNullOrWhiteSpace()
函數進行檢查
因此,例如:
var str = "<;;;>";
var split = str.Split(';');
var val1 = split[0].Split('<')[1];
Console.WriteLine(string.IsNullOrWhiteSpace(val1)); //true
這是將正則表達式和拆分結合在一起的方法。 我沒有執行任何null / empty / whitespace驗證,也沒有驗證split
結果至少包含4個元素。 這使用捕獲組從匹配項中選擇文本,它只是使用.*
盲目地抓取組中所有可能的文本,其中用括號定義了組。
string txt = "<value1;127.0.0.1:20000;value2;value3>Lorem ipsum dolor sit amet!";
var rgx = new Regex(@"<(.*)>(.*)");
var match = rgx.Match(txt);
// Should check if (match.Success) here and only continue if true
var entireMatch = match.Groups[0]; // unused
var firstCaptureGroup = match.Groups[1].Value; // Everything between < >
var secondCaptureGroup = match.Groups[2].Value; // Everything after < >
var split = firstCaptureGroup.Split(';');
string val1 = split[0];
string val2 = split[2];
string val3 = split[3];
string ipaddress = split[1];
string text = secondCaptureGroup;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.