Regex 我不知道’;我得不到正则表达式
我不理解或不认为需要正则表达式Regex 我不知道’;我得不到正则表达式,regex,Regex,我不理解或不认为需要正则表达式 一些人可以用简单的术语解释它们,并提供一些基本的例子,说明它们可能是有用的,甚至是关键的。正则表达式的用途: 正则表达式本身就是一种允许您对字符串输入执行复杂验证的语言。也就是说,你给它传递一个字符串,如果匹配与否,它将返回true或false 正则表达式的使用方法: 表单验证,确定用户输入的格式是否符合您的要求 在文本块中查找某个图案的位置 搜索和替换,其中搜索词是正则表达式,替换的是普通字符串 一些正则表达式语言功能: 交替:允许您选择一件事或另一件事。
一些人可以用简单的术语解释它们,并提供一些基本的例子,说明它们可能是有用的,甚至是关键的。正则表达式的用途: 正则表达式本身就是一种允许您对字符串输入执行复杂验证的语言。也就是说,你给它传递一个字符串,如果匹配与否,它将返回true或false 正则表达式的使用方法:
- 表单验证,确定用户输入的格式是否符合您的要求
- 在文本块中查找某个图案的位置
- 搜索和替换,其中搜索词是正则表达式,替换的是普通字符串李>
- 交替:允许您选择一件事或另一件事。示例仅匹配“是”或“否” 是|不是
- 分组:您可以使用括号定义范围和优先级。例如,匹配3种颜色 gr(a | e)y |黑|白
- 量化:你可以量化你想要多少东西?表示1或0,*表示0或更多表示至少一个。示例:接受非空的二进制字符串: (0 | 1)+
[hc]+at
匹配“hat”、“cat”、“hhat”、“chat”、“hcat”、“ccchat”等,但不匹配“at”
在需要使用/操作模式的地方使用它们。例如,假设您需要识别以下模式:
- 任意字母A-Z,大写或小写,5或6次
- 3位数
- 一个字母a-z(绝对小写)
[A-Za-z]{5,6}[0-9]{3}[a-z]
(还有其他的表达方式。)分组结构使匹配整个模式和获取(或替换)不同的模式位变得容易
但也有一些缺点:
- 正则表达式很快就会变得复杂和难以阅读。彻底记录李>
- 不同的正则表达式引擎之间的行为存在差异
- 如果你不是专家(我当然不是!),复杂性可能很难判断;有一些“陷阱”可以使模式在特定输入下变得非常缓慢,而这些陷阱一点也不明显
- 有些人大量过度使用正则表达式(当然,有些人使用不足)。我见过的最糟糕的例子是有人问(在C#组中)如何检查字符串的长度是否为3-这显然是使用string.length的工作,但有人认真地建议匹配正则表达式。疯狂。(他们也把正则表达式搞错了,这在某种程度上证明了这一点。)
- 正则表达式使用反斜杠来转义各种事物(例如,使用.来表示“一个点”,而不仅仅是“任何字符”。在许多语言中,反斜杠本身需要转义
href
标记到验证em所有地址
它们可以被处理成一个非常高效的数据结构(FSA),可以非常快速地找到匹配项。给你一些例子:
- 电子邮件地址
- 密码至少需要1个字母和1个数字
- 你怎样才能达到这些要求
- 最好的方法是使用正则表达式
每当您在大量文本数据中找到某种模式时,或者如果您想检查字符串是否采用某种格式时 例如电子邮件地址 检查at符号和有效域的代码看起来相当大,您可以使用正则表达式,并在两行代码中找到答案
Regex r = new Regex("<An Email Address Regex>");
bool isValidEmail = r.IsMatch(MyInput);
Regex r=newregex(“”);
bool-isValidEmail=r.IsMatch(MyInput);
其他示例是在将数字解析为整数等之前检查其格式是否正确。正则表达式是指定大多数模式匹配和替换问题的一种非常简洁的方法,并且regexp引擎可以进行高度优化 如果您想做与相对简单的regexp相同的工作,那么就必须编写大量代码,这些代码可能包含许多bug,很难理解
my_versioned_file_(\d{4}-\d{2}-\d{2}).txt
abstract\s+class\s+\w+\s+extends\s+TestCase
ps -e | grep -e " sh| bash"