Questions tagged «regular-expression»

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


3
正则表达式和Sed / Perl:匹配在ISN之前没有另一个单词的单词
我想使用sed或perl替换前面没有特定单词的单词的所有出现。 例如,我有一个文本文件,其中包含电影情节,并且我希望将所有出现的角色姓氏替换为其名字,但前提是角色的姓氏不紧跟其姓氏。 示例文本可能如下所示: John Smith and Jane Johnson talk about Smith's car. 我希望它看起来像这样: John Smith and Jane Johnson talk about John's car. 如果我只是这样做sed 's/Smith/John/' file,那么我将有: John John and Jane Johnson talk about John's car. 在姓氏之前的名字将始终相同。我不必处理John Smith和Frank Smith。我只需要一种匹配的方法Smith,而没有John之前的方法。




4
递归重命名与正则表达式匹配的子目录
我有一个媒体服务器,其文件夹名为Series。(/media/Expansion2/Series/) 在其中,我有(惊讶!)电视连续剧。这些只是节目名称,例如,/media/Expansion2/Series/The Big Bang Theory/ 在每个节目的文件夹内(这是问题所在),我有季节文件夹。我目前混合了以下两个约定(可能还有其他几个约定): /media/Expansion2/Series/The Big Bang Theory/The Big Bang Theory Season 1 /media/Expansion2/Series/The Big Bang Theory/Season 2 最后,我想将所有文件夹重命名为just Season #。 作为正则表达式,我可能会说类似 s/.*(Season \d)/$1 仅适用于文件夹,不适用于文件。我可能还应该提到,这是用于大约50多个show sub文件夹的,因此它需要从/media/Expansion2/Series/级别开始并研究每个系列:)

7
如何用新行替换单词
我有一个包含以下数据的文本文件,每行以结尾|END|。 T|somthing|something|END|T|something2|something2|END| 我tryig更换|END|与\n新行的sed。 sed 's/\|END\|/\n/g' test.txt 但这会产生错误的输出,如下所示: T | s o m e ... 但是我想要的是: T|somthing|something T|something2|something2 我也尝试过tr。它也不起作用。

2
强制Bash使用Perl RegEx Engine
您可能已经知道,Bash RegEx引擎不支持现代RegEx引擎支持的许多功能(向后引用,环视断言等)。以下是我刚刚创建的一个简单的Bash脚本,试图解释我的最终目标是: #!/bin/bash # Make sure exactly two arguments are passed. if [ $# -lt 2 ] then echo "Usage: match [string] [pattern]" return fi variable=${1} pattern=${2} if [[ ${variable} =~ ${pattern} ]] then echo "true" else echo "false" fi 因此,例如,类似以下命令的内容将返回false: . match.sh "catfish" "(?=catfish)fish" 而在Perl或JavaScript正则表达式测试器中使用时,完全相同的表达式将找到匹配项。 反向引用(例如(expr1)(expr2)[] \ 1 \ …

3
在cp中使用正则表达式
这是一个简单的问题。我正在尝试将当前目录中所有以“ axis-2”开头并以“ .jar”结尾的文件复制到目标目录,假设它是〜/ MyDirectory。我首先想到的是尝试 cp '^axis2.*jar$' ~/MyDirectory 但这是行不通的。我什至不确定我可以在cp中使用正则表达式。一段时间以来,我还没有真正使用过正则表达式,我的语法可能完全不正确。当我尝试此cp时,只会输出“无此文件或目录”错误消息。有没有人对如何解决这个问题有任何建议?谢谢!

5
实现扩展的正则表达式以根据字符串中的位置添加可变数量的前导零
我在将sed语法降低到将不同数量的前导零添加到数字组织方案时遇到麻烦。我正在操作的字符串看起来像 1.1.1.1,Some Text Here 利用sed语法 sed -r ":r;s/\b[0-9]{1,$((1))}\b/0&/g;tr" 我能够引起回应 01.01.01.01,Some Text Here 但是,我要寻找的东西是将字段2和3中的2位数字零填充,并将字段4中的3位数字零填充,以使所有项目的标准长度为[0-9]。[0-9] { 2}。[0-9] {2}。[0-9] {3} 1.01.01.001,Some Text Here 为了我的一生,我什至无法想像如何修改边界以包括必要的参数,以便仅在一个句点之后捕捉到数字。我认为这与\ b的使用有关,我理解\ b在单词边界匹配零个字符,但是我不明白为什么我为匹配添加句点的尝试失败如下: sed -r ":r;s/\.\b[0-9]{1,$((1))}\b/0&/g;tr" sed -r ":r;s/\b\.[0-9]{1,$((1))}\b/0&/g;tr" Both cause the statement to hang sed -r ":r;s/\b[0-9]\.{1,$((1))}\b/0&/g;tr" sed -r ":r;s/\b[0-9]{1,$((1))}\.\b/0&/g;tr" sed -r ":r;s/\b[0-9]{1,$((1))}\b\./0&/g;tr" cause the statement to output: 1.01.01.1,Some …

2
将特殊字符与正则表达式匹配
如果我要查找包含小写字母和数字的内容,这很容易 Produce_text | grep -E'[0-9a-z]' 括号对于匹配一组字符很有用,但是有些特殊的字符呢? 如果我想使用括号,匹配任何字符,但其中之一:一个右括号],破折号(或连字符)“ - ”,两个斜线/和\,插入符号^,一个冒号:。 会是这样吗(我知道这行不通)? [^]-/ \ ^:]

3
“ ls -a |的奇怪行为” grep ^ \。”
我想列出一个密码的内容,只显示以点开头的文件。我尝试过,ls -a | grep ^\.但是我无法弄清楚为什么输出中还包含不以点开头的文件。例如: Pictures .pip .pki .profile projects Public 我知道我可以实现自己想要的,ls -ld .*只是对grep的这种行为感到好奇,我无法解释。

5
从文本文件中删除反斜杠
我有 输入: NISHA =\455 输出: NISHA = 455 我想\从输出中删除。我试图使用命令,sed "s/[\]//g" P但是它不起作用,并且它会标记错误: character found after backslash is not meaningful


4
正则表达式使用\\与\
为什么 grep e\\.g\\. <<< "this is an e.g. wow" 和 grep e\.g\. <<< "this is an e.g. wow" 做同样的事情? 如果添加第三个斜杠,则结果也相同。但是,一旦我添加了第四个斜杠,它将不再起作用。这与旧的考试题有关。它询问带有两个反斜杠的那个是否可以输出带有“ eg”的行,我本来以为这行不行,但是我尝试确定并且确实如此。有什么解释?

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.