Questions tagged «regular-expression»

正则表达式是匹配字符串中字符模式的一种方式。

2
grep:显示一次文件名,然后显示带有行号的上下文
我们的源代码中遍布错误代码。使用grep可以很容易地找到它们,但是我想要一个find_code可以执行的bash函数(例如find_code ####),它将提供以下内容的输出: /home/user/path/to/source.c 85 imagine this is code 86 this is more code 87 { 88 nicely indented 89 errorCode = 1111 90 that's the line that matched! 91 ok this block is ending 92 } 93 } 这是我目前拥有的: find_code() { # "= " included to avoid matching unrelated number …

2
如何在AWK中使用正则表达式作为字段分隔符?
我正在尝试使用regex作为中的字段分隔符awk。从我的阅读看来,这似乎是可行的,但我无法正确理解语法。 rpm -qa | awk '{ 'FS == [0-9]' ; print $1 }' awk: cmd. line:1: { FS awk: cmd. line:1: ^ unexpected newline or end of string 有什么想法吗?目的(如果不是很明显)是获得没有版本号的软件列表。

2
vim:在替换命令中使用搜索字符串
我经常使用vim /search命令来验证我的正则表达式(只是看它匹配什么)。之后,我通常使用:%sreplace命令,在其中将搜索中的正则表达式用作要替换的字符串,例如,我首先寻找这样的字符串: /TP-\(\d\{5\}\)-DD-\d\{3\} 它与我想要的完全匹配,所以我进行替换: :%s/TP-\(\d\{5\}\)-DD-\d\{3\}/\1/g 但是我必须在这里再次编写整个正则表达式。通常,正则表达式要长得多,这就是为什么我要寻找解决方案: 是否有任何现有的快捷方式或vim脚本可将该搜索模式直接粘贴到replace命令中? 我在终端中使用vim(没有gvim)。

2
ls --hide =和ls --ignore =的语法
ls --hide并ls --ignore提供了省略通过--ignore=零件后设置的正则表达式定义的文件的可能性。后者确保不会通过禁用此选项-a, -A。该命令man和info页面提到了正则表达式。 问题:ls --hide=和中支持哪些通配符或正则表达式ls --ignore=。 我发现它* $ ?以及POSIX Bracket Expressions似乎都受支持。但这似乎并非一直都能正常工作,对我来说更像是反复试验的游戏。我在这里错过了重要的事情吗?


3
根据正则表达式拆分文本文件
根据《易经》的64个卦,我有一个文本文件,希望将其分成64个不相等的部分。由于每个卦的开头都是一些数字,一个句点和两个换行符,因此正则表达式应该很容易编写。 但是,实际上如何根据此正则表达式将文本文件拆分为64个新文件?似乎更像是一项任务perl。但是也许有一种更明显的方式让我完全迷失了。

2
将grep与--exclude-dir标志一起使用以排除多个目录
我正在Ruby on Rails应用程序中搜索grep在OSX上使用的单词,我想排除匹配特定模式的目录。 我正在使用以下命令: grep -inRw -E 'direct' . --exclude-dir -E 'git|log|asset' 该命令没有按照我的预期去做。我认为这会起作用: i-不区分大小写的搜索 n-在其中找到图案的打印行号 R-递归搜索 w-我只想要整个单词-即匹配“直接”而不匹配“目录” -E-使用扩展的正则表达式 'direct'-我要匹配的正则表达式 。-在当前目录中搜索 --exclude-dir -E'git | log | asset'-排除与git或日志或资产匹配的目录。 在排除目录方面,该命令仍然最终在“ ./git”和“ ./log”目录以及“ ./app/assets”中搜索 我显然缺乏基本知识,但我不知道这是什么。

2
用sed替换文件中所有行的模式中第一次出现的模式
是否可以在一个衬管中完成? 我有这样的输出: "First line" - Description " Second line" - Description "Third line" - Description " Fourth line" - Description 此输入是自动生成的。 我想"用"(引号)替换每行的第一次出现(引号+空格)。如果我全局应用替换,它也会更改每次出现的line" -情况line"-,因此我想知道是否可以使用sed一个衬垫来完成此操作。 我已经尝试使用^这样的 sed -r ':a;N;$!ba;s/(\^\" )/\"/g' 但是它不起作用,它不能替代任何东西。我试过了 sed -r ':a;N;$!ba;s/(^|\" )/\"/g' 并替换所有出现的事件。我刚刚开始使用sed,所以我真的不知道我做错了什么。 我在这里想念什么?


3
匹配包含a-zA-Z以外的字符的单词
匹配一个单词可以使用 \v(\w+) 从vim帮助中:h \w: \ w文字字符:[0-9A-Za-z_] 完全按照手册中的描述进行操作。但是,我想匹配包含超出字符的单词a-z,例如 prästgården。将正则表达式\v(\w+)与 prästgården进行匹配将产生三个匹配项,而不是: prästgården ^^ ^^^ ^^^^ 如何匹配包含超出字符的单词a-z?我的语言环境设置为英语,如果可能的话,我希望保持这种状态。 编辑:单词可能不属于单个语言环境,例如 prästgården treść


4
如何使用sed检测行尾
我正在寻找一种仅在最后一个字符为换行符时执行替换的方法sed。 例如: lettersAtEndOfLine 被替换,但这不是: lettersWithCharacterAfter& 由于sed不适用于换行符,因此它不如简单 $ sed -E "s/[a-zA-Z]*\n/replace/" file.txt 如何做到这一点?




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.