由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 正则表达式里括号的转义好乱
相关主题
在emacs中怎么按照某种格式进行替换?如何利用正则表达式提取如下字符串的前两段?
perl 的问题正则表达式的问题 (转载)
问个关于正则表达式的超弱智问题...问个正则表达式的问题
python 正则表达式请教简单的perl正则表达式文本替换多个空行问题求教
sed里面正则表达式匹配字符越少越好怎么写?grep或egrep怎样输出匹配到的不连续的字符串?
请问一个正则表达式的问题parsing file in node: js or python ?
急请教:用java实现解析parse一个log文件,多谢指点请教一个perl的问题 (转载)
请教Regular Expression,问个grep正则匹配的问题 (转载)
相关话题的讨论汇总
话题: grep话题: 7890话题: 转义话题: 456话题: 123
进入Programming版参与讨论
1 (共1页)
d******i
发帖数: 7160
1
比如下面这个匹配电话号码 (123) 456-7890 的写法(lc接受的正确版):
grep '([0-9]\{3\}) [0-9]\{3\}-[0-9]\{4\}' file.txt
显然()和{}是本身默认为token,需要转义才做语义符的。
而[]是本身默认为语义符,需要转义才做token的。
为啥不能把语法统一了呢?
请过来人指教。
谢谢!
n******7
发帖数: 12463
2
grep/vim/perl等的正则语法都有些不同
所以没必要不要折腾这个,用一种就好
比如grep 可以用-P
不然会精分
w**z
发帖数: 8232
3
我每次都要看manual 才能写。

【在 d******i 的大作中提到】
: 比如下面这个匹配电话号码 (123) 456-7890 的写法(lc接受的正确版):
: grep '([0-9]\{3\}) [0-9]\{3\}-[0-9]\{4\}' file.txt
: 显然()和{}是本身默认为token,需要转义才做语义符的。
: 而[]是本身默认为语义符,需要转义才做token的。
: 为啥不能把语法统一了呢?
: 请过来人指教。
: 谢谢!

d****i
发帖数: 4809
4
最标准的正则表达式应该是Perl了吧,最原生的应该是Bourne shell的。

【在 n******7 的大作中提到】
: grep/vim/perl等的正则语法都有些不同
: 所以没必要不要折腾这个,用一种就好
: 比如grep 可以用-P
: 不然会精分

d******i
发帖数: 7160
5
大哥,正是不想折腾才有OP的问题。
加P试了,没有啥区别啊。
还是一样的问题:转义的默认项不一致。

【在 n******7 的大作中提到】
: grep/vim/perl等的正则语法都有些不同
: 所以没必要不要折腾这个,用一种就好
: 比如grep 可以用-P
: 不然会精分

n******7
发帖数: 12463
6
你到底试了没?
-> grep '([0-9]\{3\}) [0-9]\{3\}-[0-9]\{4\}' test
(123) 456-7890
-> grep -P '([0-9]\{3\}) [0-9]\{3\}-[0-9]\{4\}' test
-> grep -P '\([0-9]{3}\) [0-9]{3}-[0-9]{4}' test
(123) 456-7890
-> grep -P '\(\d{3}\) \d{3}-\d{4}' test
(123) 456-7890
不知道为啥,贴出来的backslash都没了,要修改才好

【在 d******i 的大作中提到】
: 大哥,正是不想折腾才有OP的问题。
: 加P试了,没有啥区别啊。
: 还是一样的问题:转义的默认项不一致。

n******7
发帖数: 12463
7
不好说那个标准,不过我只用perl的,减少记忆负担和错误
python的regexp跟perl的也一样
我记得哪里看到过一个不同版本的regexp语法对照表,vim用的是basic regular
expression
grep自己有一套,但是可以兼容其他几类,编程语言perl风格是主流
还好我不用很多regexp的东西,不然这种回字几种写法的事情要搞死人

【在 d****i 的大作中提到】
: 最标准的正则表达式应该是Perl了吧,最原生的应该是Bourne shell的。
d******i
发帖数: 7160
8
多谢,之前没写对。
perl style的还是要清新些。

【在 n******7 的大作中提到】
: 你到底试了没?
: -> grep '([0-9]\{3\}) [0-9]\{3\}-[0-9]\{4\}' test
: (123) 456-7890
: -> grep -P '([0-9]\{3\}) [0-9]\{3\}-[0-9]\{4\}' test
: -> grep -P '\([0-9]{3}\) [0-9]{3}-[0-9]{4}' test
: (123) 456-7890
: -> grep -P '\(\d{3}\) \d{3}-\d{4}' test
: (123) 456-7890
: 不知道为啥,贴出来的backslash都没了,要修改才好

1 (共1页)
进入Programming版参与讨论
相关主题
问个grep正则匹配的问题 (转载)sed里面正则表达式匹配字符越少越好怎么写?
请问哪有用python处理文本或者html的code请问一个正则表达式的问题
问个表达式急请教:用java实现解析parse一个log文件,多谢指点
[合集] 请问一下题目的解决答案请教Regular Expression,
在emacs中怎么按照某种格式进行替换?如何利用正则表达式提取如下字符串的前两段?
perl 的问题正则表达式的问题 (转载)
问个关于正则表达式的超弱智问题...问个正则表达式的问题
python 正则表达式请教简单的perl正则表达式文本替换多个空行问题求教
相关话题的讨论汇总
话题: grep话题: 7890话题: 转义话题: 456话题: 123