Questions tagged «regex»

也称为正则表达式或regexp,是一组字符串的描述,通常用于搜索和验证字符串。

3
仅用部分线替换线
我有一个来自维基百科的大表(来自维基源),我想提取一个列,我在vim中打开它,我想要提取的内容看起来像这样 |col||[[what I want]]||another column||another one||et cetera| 每行都有我想要的内容,所以我试过: :%s/\[\[(.+?)\]\]/\1 但是我得到了错误 E486: Pattern not found: \[\[(.+?)\]\]

1
选择一条线的不同部分
我是regexes的新手,并且有一个看起来像这样的文件: |60|493,93|1,6500| |60|95,72|1,6500| |60|43,88|1,6500| |60|972,46|1,6500| 我使用正则表达式(\|60|.*)(1,65),我能够找到所有具有我想要更改的信息的行。 如何替换当Notepad ++找到时(\|60|.*)(1,65),60应替换为50: |50|493,93|1,6500| |50|95,72|1,6500| |50|43,88|1,6500| |50|972,46|1,6500| PS:这是一个完整的例子: |C170|002|34067||44,14000|KG|493,93|0|0|020|1102||288,11|12,00|34,57|0|0|0|0|||0|0|0|60|493,93|1,6500|||8,15|60|493,93|7,6000|||37,54||

1
Bash:Grep正则表达式无法正常工作
当这样使用时grep: ps aux | grep 'processname' | awk '{print $2}' 在PIDs与流程processname返回。使用时: ps aux | grep '^processname' | awk '{print $2}' 我正在尝试获取命令行开始的进程processname,但它不起作用。 运行示例流程: processname other_processname 我想获得PID第一个选项,因为这processname是命令的开始。 我也试过使用过-E, -e, -w标志,它们都返回相同的结果。什么不对?
bash  regex  grep 

1
如何在列下grep值
如何grep特定列名称并显示该列下面的值。 样本数据: StandByFile StandByPg StandByLSN StandByRcvBufUsed S0082160.LOG 621668 0x00000C85118BC72D 0% 我想0%在StandByRcvBufUsed列下显示。请注意,该文件包含与上面显示的列不同的其他数据,这意味着不同行中的文件中有不同的列列表。 谢谢 更新: 我的文件具有以下格式,因此列#s不是固定的: HADR Information: Role State SyncMode HeartBeatsMissed LogGapRunAvg (bytes) Standby Peer Async 0 365000 ConnectStatus ConnectTime Timeout Connected Tue May 20 09:34:23 2014 (1400592863) 120 ReplayOnlyWindowStatus ReplayOnlyWindowStartTime MaintenanceTxCount Inactive N/A 0 PrimaryFile PrimaryPg PrimaryLSN S0082160.LOG 621668 0x00000C85118BC72D …
regex  grep  awk 

1
正则表达式搜索和替换bash变量
我的一些bash脚本需要在发送之前进行整理。我想做的一件事是对所有变量名使用花括号。因此,它所说的任何地方都$PWD应该改为${PWD}等等。 作为测试,我使用代码 PATH=${PWD} PATH_PATH=$PATH PATH_PATH_PATH=$PATH_PATH 我的想法是使用正则表达式搜索并替换emacs。查找所有变量名称(使用CTRL-ALT-S)的最佳表达式是$[A-Za-z0-9_\-]*,所以是'a'到'z','A'到'Z','0'到'9',下划线或连字符的序列跟随'$'。此外,它仅保留已经支撑的变量名称。 现在替换: 在手册中它说替换是'M-%string RET newstring RET'。在我的电脑上'M-%'是'ESC-%'。Regexp替换为'CM-%regexp RET newstring RET'。我猜那对我来说是C-ESC-%?不幸的是,这也是KDE中“系统活动”监视器的捷径。 我现在有两个问题: 是否有另一种方式来调用regexp替换比C-ESC-% 对于上面的例子,“newstring”的表达应该是什么?

2
命令行上的文件匹配模式?
有人可以帮助我使用相对复杂的命令行文件匹配模式吗? 我在目录中有文件如下: 1.png 1_thumb.png 1-1.png 1-1_thumb.png 1-2.png 1-2_thumb.png 2.png 2_thumb.png 2-1.png 2-1_thumb.png 3.png 3_thumb.png 3-1_thumb.png 我想列出所有没有具有相同文件名的副本的文件-1。因此,在上面的例子中,结果将是3.png。 注意:如果有帮助,文件及其中带有“-1”的副本将是相同的文件大小。 任何人都可以建议如何做到这一点?

3
如何在Notepad ++中切换和合并文本行
我正在使用Notapad ++,我有两种情况,我坚持使用,对于我的学生有动词共轭列表的大文本文件,与android应用程序的数据库一起使用。 情况1 有一些文本文件,我想在每两行之间切换,因此第2行在第1行之前先行,第4行在第3行之前,依此类推文本文档的其余部分。我的意思是,而不是1,2,3,4,5,6行,他们将是2,1,4,3,6,5等。 情况2 在其他文本文件中,我想在一行中合并每4行,如下所示:从第4行开始,然后添加“ - ”符号,然后添加第2行的文本,“ - ”符号,然后是行的文本1,然后是逗号,然后是第3行的文本。 如果那令人困惑,我很抱歉。这是一个例子。 我需要这个: 过去分词 过去 意义 动词 所有人都成为这样一行: 动词 - 过去 - 过去分词,意思 第一个文件的片段: تعليمات instructions مهندس 工程师 أرضية 地板 والدين 父母 第二个文件的片段: 改变了 改变 يتغير 改变 轻松 放松 يسترخى 放松 邀请 邀请 يدعو 邀请 非常感谢您的帮助。

1
这是grep -P中的错误吗?(我好像出现了太多的比赛)
这是我的文件 http://www.zen76171.zen.co.uk/blahsomefile1 这是一个大约1.18MB的文本文件 看看我得到了多少匹配线 用-P C:\blah>grep -P "[^J]*J" blahsomefile1 | wc -l 72383 没有-P C:\blah>grep "[^J]*J" blahsomefile1 | wc -l 51814 无论是-P还是没有-P,都应该没有区别,但是有。-P匹配太多了。 通过这个测试,我应该得到相同的数字'cos我所说的列表匹配xyz的每一行,并在该输出列表中每一行匹配xyz。它没有-P工作。 没有-P没什么好笑的。 C:\blah>grep "[^J]*J" blahsomefile1 | wc -l 51814 C:\blah>grep "[^J]*J" blahsomefile1 | grep "[^J]*J" | wc -l 51814 随着-P事情发生不应该发生.. C:\blah>grep -P "[^J]*J" blahsomefile1 | wc -l 72383 …

0
在MS Word中高效查找/替换包含文本的标题
我在MS Word中有多个标题3。其中一些包含特定文本:“MYTEXT”。我想找到包含“MYTEXT”的所有标题3,并在转换为标题2时删除该单词和所有文本。 我可以通过在MS Word中执行正则表达式查找/替换来实现这一点,但是在150页文档上运行需要大约5分钟才能完成大约25次更改。一定有更好的方法!你有更有效的方法来做到这一点: 这个问题源自我在这里问的另一个问题:MS Word查找样式跨越包含文本和替换部分的2行

1
正则表达式
我需要编写一个与以下字符串匹配的mod_rewrite规则: /modules/users/users/ae/ghwjzL9D2qpnPqv3FRY3JTZ48N 字符串中唯一不变的部分是/ae/。 我需要一个正则表达式之前赶上字符串的一部分/ae/之后/ae/,并适当地重定向。 所以这样的事情 网址输入: /modules/users/users/ae/ghwjzL9D2qpnPqv3FRY3JTZ48N RewriteRule ^([a-z0-9\-\/])+\/ae\/([a-zA-z0-9])* $1/file.php?id=$2 网址处理: /modules/users/users/file.php?id=$2 到目前为止我能够捕获网址但无法获得正确的变量

1
Notepad ++正则表达式从行开始查找和替换2个字符,但以它开头
所以我是正则表达式的新手,我在这里遇到了这个问题。 我需要用逗号分隔的多行替换一些数据。但它应该跳过开头的行Style: sign。 例: 这些是数据的含义(用逗号分隔,只是为了显示它代表什么)。 Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding 必须更换的东西是:( Bold到0)和ScaleX(到85) 这是需要更换一些东西的整个文本块。 Style: main,Arial,23,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,1.35,0,2,10,10,20,1 Style: italics,Arial,23,&H00FFFFFF,&H000000FF,&H004E2C2A,&H00000000,-1,-1,0,0,100,100,0,0,1,1.35,0,2,10,10,20,1 Style: sign_1330_2_K_a_t_a_g_i_r_i_,Trebuchet MS,12,&H00C1D8BF,&H000000FF,&H004D973B,&H00000000,-1,0,0,0,100,100,0,17,1,3,0,8,30,375,80,1 Style: sign_1446_5_K_a_g_a_r_i___A_,Trebuchet MS,12,&H00F1FBE9,&H000000FF,&H004F963D,&H00000000,-1,0,0,0,100,100,0,-15,1,3,0,2,335,30,100,1 Style: sign_2051_16_M_a_t_s_u_o___M_,Trebuchet MS,12,&H00C1D8BF,&H000000FF,&H004D973B,&H00000000,-1,0,0,0,100,100,0,7,1,3,0,8,162,468,64,1 Style: sign_2163_16_Schleich,Times New Roman,16,&H0021110C,&H000000FF,&H007D594A,&H00000000,-1,0,0,0,100,100,0,-10,1,3,0,8,67,507,25,1 这应该是结果: …

1
除了匹配之外,Grep得到一切
假设我有一个文本文件说: Hello my name is agz. I am asking a question that is important. 如果我输入:grep -v "is" /path/to/file,我应该没有输出,因为两行都有“是”。 如果我输入:grep -o "is" /path/to/file,我应该得到: is is 但是我想得到: Hello my name agz. I am asking a question that important. (只是错过了)有没有办法用grep和minimal regex实现这个目的?
bash  regex  grep 

2
如何仅使用最后一次出现的正则表达式打印该行?
我有一个(大)文件有多次出现的表达式SCF Done,我(现在)只对这些行的最后一行感兴趣。目前我正在使用管道命令: sed -n '/SCF Done/p' <filename> | sed '$!d' 我想以某种方式组合它来替换该命令,但我还是无法这样做。具体来说,我想要<filename>最后。有没有办法做到这一点? 虽然我更喜欢使用sed的解决方案,但我对其他命令行工具持开放态度。

3
根据文件名中的时间模式生成文件列表
我有一个摄像机记录设备,它将生成一个包含视频的结构化文件夹,如下例所示。 我想生成视频文件列表,但只生成给定时间范围内的视频文件。例如:8h00到17:00之间(由于光线不足,该范围之外的视频质量较差) 文件名的结构是这样的:[DATE Folder] AM | PM / sricam- [date]-[time] -sequence#.mp4 对于以下示例,过滤器将仅列出从8h08:15开始的文件 /data/20171229AM/sricam-20171229-070814-1514520494.mp4 /data/20171229AM/sricam-20171229-073814-1514522294.mp4 /data/20171229AM/sricam-20171229-080815-1514524095.mp4 /data/20171229PM/sricam-20171229-180815-1513553225.mp4 我发现大括号扩展模式可以过滤数字,但如何在所有子文件夹中执行 我希望我的解释不要太困惑了:) 谢谢
linux  bash  regex  grep 

1
Windows等效于UNIX正则表达式
有替代品吗 **/*.* **/*.cpp 这样我就可以做这样的事情: gcc -std=c++14 -I ./include/ -o ./bin/main ./src/**/*.cpp (不使用任何makefile时的方式) 在Windows上,我这样做: gcc -std=c++14 -I include -o bin/main src/main.cpp src/Sth.cpp src/SthEl.cpp 因为正则表达式似乎不起作用,或者我无法找到使它们起作用的方法... 你能告诉我在Windows上怎么做吗?
windows  regex  g++ 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.