如何检查字符串是否与某种格式匹配?例如,如何检查字符串是否与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 our Regular Expression object
Run Code Online (Sandbox Code Playgroud)
shy*_*cha 14
正则表达式匹配变得简单:
Regex r = new Regex(@"your_regexp");
if (r.Match(whatever).Success)
{
// Do_something
}
Run Code Online (Sandbox Code Playgroud)
如果whatever字符串匹配you_regexp正则表达式,此代码将调用某些操作.
那么它们是什么,这些正则表达式(与正则表达式或正则表达式的缩写相同)?它们只是字符串模式,旨在用作其他字符串的过滤器.
假设您有很多HTTP标头,并且您只想获得GET moofoo HTTP/1.1.您可以使用string.Contains(other_string)方法,但正则表达式使此过程更加详细,无错误,灵活且方便.
Regexp由块组成,可以在将来用于替换.每个块定义整个字符串在某个位置可以包含的符号.块允许您定义这些符号或使用模式来简化您的工作.
可能是或可能不在当前字符串位置的符号确定如下:
HTTP单词 - 这始终存在于HTTP标头中.|(逻辑OR)运算符.注意:所有变体必须用方框符号括起来 - 圆括号.请阅读以下详细信息.在我们的例子中匹配一个GET字-这个头可以使用GET,POST,PUT或 DELETE词.如果您知道所有可能的符号范围,请使用范围块:例如,可以将文字确定为[a-z],[\w]或[[:alpha:]].方括号是范围块的标志.它们必须与count运算符一起使用.这个用于定义重复.例如,如果您的单词/符号应匹配一次或多次,则应使用以下内容定义:
? (意思是'可能存在而且可能不存在')+ (代表'一次或多次')* (代表'零或更多'){A,} (代表'A或更多'){A,B} (表示'不小于A且不大于B倍'){,B} (代表'不超过B')如果您知道哪些符号范围不能出现,请在范围内使用NOToperator(^),最开始:[^a-z]匹配132==?while [^\d]匹配abc==?(\d定义所有数字并等于[0-9]或[[:digit:]]).注意: ^如果未在范围块中使用,则还用于确定整个字符串的开头:^moo匹配moofoo与否foomoo.要完成这个想法,$匹配整个字符串的结尾:moo$匹配foomoo与否moofoo.
如果您不关心要匹配的符号,请使用star:.*是最常用的模式,以匹配任意数量的任何符号.
Note: all blocks should be enclosed by round brackets ((phrase) is a good block example).
Note: all non-standard and reserved symbols (such as tab symbol \t, round brackets ( and ), etc.) should be escaped (e.g. used with back-slash before symbol representation: \(, \t,, \.) if they do not belong to any block and should be matched as-is. For example, in our case there are two escape-sequences within HTTP/1.1 block: \/ and \.. These two should be matched as-is.
Using all the text before i've typed for nearly 30 minutes, let's use it and create a regexp to match our example HTTP header:
(GET|POST|PUT|DELETE) will match HTTP method
\ will match <SP> symbol (space as it defined in HTTP specification)HTTP\/ 会帮助我们只计算HTTP请求(\d+\.\d+)将匹配HTTP版本(这1.1不仅匹配,而且12.34也匹配)^并且$将是我们的字符串边界限制器收集所有这些陈述将给我们这个正则表达式:^(GET|POST|PUT|DELETE)\ HTTP\/(\d+\.\d+)$.
| 归档时间: |
|
| 查看次数: |
7061 次 |
| 最近记录: |