linux的grep命令,解释一下perl正则表达式在这里怎么用,以及语法?
grep-P’Regularexpressions’其中-P告诉grep使其支持perl正则表达式’Regularexpressions’此处就是perl正则表达式具体的语法跟perl中的一模一样
请问如何用正则表达式或replacepioneer批量处理xml文本?
以perl为例,一般用正则表达式s/a/b/表示搜索a替换为b。类似,在php里,有preg_replace(‘a’,’b’,字符串)。用在软件replace pioneer里,就是ctrl-h打开replace窗口,在search输入a,在replace输入b,点击replace即可把文本里的a都替换为b。这里的a和b只是象征性的符号,可以用复杂的正则表达式替代。
perl正则语法(?:的含义?
(pattern)
匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 ‘(’ 或 ‘)’。
(?:pattern)
匹 配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 “或” 字符 (|) 来组合一个模式的各个部分是很有用。例如, ‘industr(?:y|ies) 就是一个比 ‘industry|industries’ 更简略的表达式。
(?=pattern)
正 向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,‘Windows (?=95|98|NT|2000)’ 能匹配 “Windows 2000〃 中的 “Windows” ,但不能匹配 “Windows 3.1〃 中的 “Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern)
负 向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如‘Windows (?!95|98|NT|2000)’ 能匹配 “Windows 3.1〃 中的 “Windows”,但不能匹配 “Windows 2000〃 中的 “Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
在PERL的模式中,括号内的子模式将存贮在内存中,此功能即取消存贮该括号内的匹配内容,如/(?:a|b|c)(d|e)f1/中的1表示已匹配的d或e,而不是a或b或c
Perl正则表达式如何表示非?
!~,W 非英文字母或数字的字符串,和 [^a-zA-Z0-9_] 语法一样 S 非空格,和 [^ntrf] 语法一样 B 匹配不以英文字母,数值为边界的字符串 D 非数字,其他同 d