C# 如何确保字符串与特定格式匹配?
如何检查字符串是否与特定格式匹配?例如,如何检查字符串是否与IP地址、代理地址(或任何自定义格式)的格式匹配 我找到了这段代码,但我无法理解它的作用。请帮助我了解匹配字符串的创建过程C# 如何确保字符串与特定格式匹配?,c#,regex,C#,Regex,如何检查字符串是否与特定格式匹配?例如,如何检查字符串是否与IP地址、代理地址(或任何自定义格式)的格式匹配 我找到了这段代码,但我无法理解它的作用。请帮助我了解匹配字符串的创建过程 string pattern = @"^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\. ([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$"; //create o
string pattern = @"^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.
([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$";
//create our Regular Expression object
我可以建议您阅读wiki页面。我可以建议您阅读wiki页面。正则表达式匹配非常简单:
Regex r = new Regex(@"your_regexp");
if (r.Match(whatever).Success)
{
// Do_something
}
如果字符串与正则表达式匹配,则此代码将调用一些操作
那么它们是什么,这些正则表达式(与regex或regexp abbrevation相同)?它们只不过是字符串模式,设计用来作为其他字符串的过滤器
假设您有很多HTTP头,并且只想获取get moofoo HTTP/1.1
。您可以使用string.Contains(other_string)
方法,但是regexp使这个过程更加详细、无错误、灵活和方便
Regexp由块组成,将来可能用于替换。每个块定义整个字符串在某个位置可以包含哪些符号。块允许您定义这些符号或使用模式来简化工作
符号可能在当前字符串位置,也可能不在当前字符串位置,确定如下:
- 如果你确信这些符号一定存在,就用“原样”吧。在我们的示例中,这与
HTTP
word匹配-这总是出现在HTTP头中
- 如果您知道所有可能的变化,请使用
|
(逻辑或
)运算符注意:所有变体必须用方框符号-圆括号括起来。请阅读下面的详细信息。在我们的例子中,这一个匹配GET
word-此标题可以使用GET
、POST
、PUT
或DELETE
单词
- 如果您知道所有可能的符号范围,请使用范围块:例如,可以将文字确定为
[a-z]
、[\w]
或[:alpha:]
方括号是范围块的符号。它们必须与计数运算符一起使用。此选项用于定义重复次数。例如,如果您的单词/符号应匹配一次或多次,则应使用以下方法定义:
?
(表示“可能存在,也可能不存在”)
+
(表示“一次或多次”)
*
(表示“零或更多”)
{A,}
(代表“A或更多”)
{A,B}
(表示“不小于A且不大于B倍”)
{,B}
(表示“不超过B”)
- 如果您知道哪些符号范围不能存在,请在范围内使用
not
运算符(^
),从一开始:[^a-z]
由132=?
匹配,[^\d]
由abc=?
(\d
定义所有数字,并等于[0-9]
或[:digital:]
)注意:^
还用于确定整个字符串的最开头,如果它未在范围块内使用:^moo
匹配mooo
而不是foooo
。为了完成这个想法,$
匹配整个字符串的结尾:moo$
将与foomoo
匹配,而不是moofoo
- 如果您不在乎要匹配哪个符号,请使用星号:
*
是最常用的模式来匹配任意数量的符号
注意:所有块都应该用圆括号括起来((短语)
是一个很好的块示例)
注意:所有非标准和保留符号(如制表符\t
、圆括号(
和)
)等)都应转义(例如,在符号表示前使用反斜杠:\(
,\t,
,\。
)例如,在我们的例子中,HTTP/1.1
block中有两个转义序列:\/
和\.
。这两个序列应该按原样匹配
在我键入将近30分钟之前,使用所有文本,让我们使用它并创建一个regexp来匹配我们的示例HTTP头:
(GET | POST | PUT | DELETE)
将匹配HTTP方法
\
将匹配
符号(在HTTP规范中定义的空格)
HTTP\/
将帮助我们仅计算HTTP请求
(\d+\.\d+
将匹配HTTP版本(这将不仅匹配1.1
,还匹配12.34
)
^
和$
将是我们的字符串边界限制器
将所有这些语句集合在一起将得到以下正则表达式:^(GET | POST | PUT | DELETE)\HTTP\/(\d+\.\d+$
正则表达式匹配变得简单:
Regex r = new Regex(@"your_regexp");
if (r.Match(whatever).Success)
{
// Do_something
}
如果字符串与正则表达式匹配,则此代码将调用一些操作
那么它们是什么呢,这些正则表达式(与regex或regexp abbrevation相同)?它们只是字符串模式,被设计为用作其他字符串的过滤器
假设您有很多HTTP头,并且只想获取get moofoo HTTP/1.1
。您可以使用string.Contains(other_string)
方法,但regexp使此过程更加详细、无错误、灵活和方便
Regexp由块组成,这些块将来可能用于替换。每个块定义整个字符串在某个位置可以包含哪些符号。块允许您定义这些符号或使用模式来简化工作
符号,可能在当前字符串位置,也可能不在当前字符串位置