GVKun编程网logo

正则expression式bash脚本(bash 正则)

3

针对正则expression式bash脚本和bash正则这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展.htaccess重写正则expression式:匹配除“索引”、bash正则expr

针对正则expression式bash脚本bash 正则这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展.htaccess重写正则expression式:匹配除“索引”、bash正则expression式在linux上工作,但不是solaris、Bash的正则expression式不接受斜杠、bash(可能会使用perl / python):通过正则expression式过滤空格分隔的arg列表等相关知识,希望可以帮助到你。

本文目录一览:

正则expression式bash脚本(bash 正则)

正则expression式bash脚本(bash 正则)

任何人都可以帮我理解为什么这不起作用? 只是在bash中尝试一些简单的正则expression式。

#!/bin/bash re="-regex_" if [[ "$re" =~ ^[-[:alpha:]_]+$ ]]; then echo "Regex" else echo "this is not regex" fi

干杯

列出所有不以数字开头的文件

从特定字段中删除引号 – 引号之间的整数

如何根据开始和结束位置来查找和replacestring

如何在bash脚本中存储“time”函数输出的子string

在windows上执行git-hooks出错

我假设你希望在您的if语句中“-regex_”将被评估为true。

在[:alpha:]标签上没有什么可说的搜索多个字母数字字符。

尝试

[[ "$re" =~ ^-[[:alpha:]]+_$ ]]

如果运行时出现错误,请确保您使用的是unix行结束符(通过dos2unix运行),并确保它标记为可执行文件。 否则,脚本为我打印“正则表达式”。

.htaccess重写正则expression式:匹配除“索引”

.htaccess重写正则expression式:匹配除“索引”

我试图创build一个.htaccess文件中使用的规则来匹配除了一个特定的string,在这种情况下, index 。

我认为应该可以首先匹配这个特殊的string,并使用[L]但这是行不通的,

应该可以使用下面的正则expression式,但是会导致500错误。

我想匹配:

pagename1

pagename2 /什么

pagename3 / 234 /什么

关于

联系我们

(等等)

但不是

在多个.htaccess文件中,多个mod_rewrite规则的优先级是多less?

.htaccess将子域redirect到域

在htaccess中添加GET参数

如何通过htaccess将目录中的所有文件redirect到另一个目录

非www .htaccessredirect – 忽略其他子域

索引/ 123

索引/ 124 /不pipe

(BTW“索引”是没有扩展名的文件的名称,不是我的select,这是一个工作的事情)

^(?!index)[w/-]+

我假设apache的正则expression式的执行不符合(?!xxx)规则。

任何帮助/build议将不胜感激。

.htaccess重写通过所有查询string

.htaccess URL和目录redirect

.htaccess mod-rewrite apache混淆导致每天10k 404的结果

.htaccess将子域重写到目录,并保持URL中的子域名

获取价值和redirect与htaccess

您可以使用RewriteCond来执行此操作,例如:

RewriteCond %{REQUEST_URI} !^index RewriteRule (.*) index.PHP?what=$1

这将重写每一个不是由索引开始的URL。 如果您希望在网址中的任何位置避开它,请移除^

(请阅读评论,我怀疑它,我从来没有遇到过问题,虽然它提供了一个更清洁的.htaccess文件,但是:由于如何处理规则集 ,使用RewriteCond 可能会优先于使用RewriteRule短划线?

只需使用RewriteRule,如下所示, 不要重写(短划线),并停止后续重写( [L] )以index/开始的任何内容:

#不要重写任何以index /

RewriteRule ^ index / - [L]

在此之后,做任何你喜欢的改写。

或者甚至可以先限制一些:

#不要重写文件,目录或符号链接

RewriteCond%{REQUEST_FILENAME} -f [OR]

RewriteCond%{REQUEST_FILENAME} -d [OR]

RewriteCond%{REQUEST_FILENAME} -l

重写规则。 - [L]

Apache使用三种不同的正则表达式实现。 第一个是System V8,自从Apache 1.3使用POSIX ERE以来,从Apache 2开始使用PCRE。 而且只有PCRE支持前瞻断言。 所以你需要Apache 2来使用这个规则。

但现在你的问题。 如果你使用这个规则:

RewriteRule ^index/ - [L]

任何以/index/开始的东西都应该被这个规则所捕获,并且不应该应用进一步的规则。

但是,如果这不起作用,试试这个:

RewriteRule !^index/ …

同样,这个规则将适用于URL路径不以/index/开头的任何请求。

如果要从URL中捕获任何内容,请使用RewriteCond条件来测试完整URL路径本身( %{REQUEST_URI} ),或者仅测试一个模式组的匹配:

RewriteCond %{REQUEST_URI} !^/index/ RewriteRule (.*) … # or RewriteCond $1 !^index$ RewriteRule ^([^/]+)/(.*) …

总结

以上是小编为你收集整理的.htaccess重写正则expression式:匹配除“索引”全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

bash正则expression式在linux上工作,但不是solaris

bash正则expression式在linux上工作,但不是solaris

以下shell脚本在Linux中运行,但不会在Solaris上运行,

#!/usr/bin/bash while getopts ":s:" opt; do case $opt in s) # Check IP against regex if [[ "$OPTARG" =~ "b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)b" ]]; then IP=$OPTARG else echo "Invalid" exit 1 fi ;; esac done

Linux的:

GNU bash,版本3.2.25(1)-release(x86_64-redhat-linux-gnu)copyright(C)2005 Free Software Foundation,Inc.

$ ./regextest.sh -s 10.2.4.3 $ $ ./regextest.sh -s 10.notaIP.10 Invalid

这是预期的结果。

在CORS中使用正则expression式

从文件名提取信息进行自动复制

如何删除前缀,后缀匹配模式的string和使用sed分割字符?

https非www到https www

如何识别Perl中的string中的Windows文件path?

但是在Solaris上,

GNU bash,版本3.00.16(1)-release(sparc-sun-solaris2.10)copyright(C)2004 Free Software Foundation,Inc.

./regextest.sh -s 10.2.4.3 Invalid

GNU bash,版本3.2.51(1)-release(sparc-sun-solaris2.10)copyright(C)2007 Free Software Foundation,Inc.

./regextest.sh -s 10.2.4.3 Invalid

谢谢

在具有第二条线的两条线之间插入线条,以某种模式开始

parsingps'“etime”输出并将其转换为秒

用-regex标志find匹配文件

Ant replaceregexp任务 – 匹配并replaceHTML注释块

除了一些文件types,htaccess正则expression式

RegEx实现(GNU与POSIX)之间有区别。

POSIX不理解b但GNU把它当作你所希望的字边界 。

由于您一次只测试一个IP,所以请尝试将您的表达式从使用单词边界 b更改为使用^ 开始和$ string /行的 结尾 ,这两种方法在大多数正则表达式中都可以识别。

"^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"

而不是与正则表达式的怪异搏斗,只是分别检查每个八位字节:

IFS=. read abcd extra <<< "$OPTARG" [[ -n $extra ]] && { echo "Too many octets"; exit 1; } for octet in "$a" "$b" "$c" "$d"; do [[ $octet =~ [[:digit:]]+ ]] && (( octet <= 255 )) || { echo "Octet '$octet' must be a single byte"; exit 1 } } IP="$a.$b.$c.$d"

可能慢一点,当然,但是参数检查不应该是你程序中的瓶颈。

Bash的正则expression式不接受斜杠

Bash的正则expression式不接受斜杠

我是相当新的bash shell脚本(和Linux太)…我尝试做一个简单的脚本,涉及到一个由用户键盘给出的string的正则expression式。

clear read -p "Insert e-mail > " if [[ $REPLY =~ ^[.] ]] then echo "ERROR (code 1): e-mail cannot start with "."" elif [[ $REPLY =~ .[.]$ ]] then echo "ERROR (code 2): e-mail cannot end with "."" else if [[ $REPLY =~ ^[0-9][0-9a-zA-Z!#$%^&'*+-]+$ ]] #THIS IS WHERE I NEED HELP then echo "Good!" else echo "Bad!" fi fi

所以我想要做的是做一个正则expression式

所以用户不能从头开始。 或结束。 (我几乎这样做,它的工作)…

接下来我想做的是让string以数字开头,我用^ [0-9](我认为这是正确的)

之后..string可以是数字0-9或字母az和AZ或下一个字符:#$%^&'* + – /

所以当用户input1&(它以数字开头,其余的是可接受的字符),但它不工作..因为它需要是&(在正则expression式公式)。

接下来同样的问题发生了字符'我做了什么,是添加一个反斜杠正则expression式公式(),它的工作..

然后我试图做同样的/字符(斜杠字符),所以我做的是添加反斜杠/(反斜杠斜杠),但是当用户input1 /(它以数字开始,其余是可接受的字符),不幸的是它打印“坏!” 它应该打印好!

为什么会这样呢?

我试过 /和 / /但仍然…不能理解为什么它不工作!

Bash – replace斜线

有没有一个基于GNU Windows的文本编辑器,使用完整的正则expression式与伟大的文档查找replace?

node.js不能识别express

在FINDSTR中使用子模式

简单.htaccessredirect:如何redirect参数?

问题是存在的! 在你正在做历史扩张的角色班上。

我建议像这样预先声明你的正则表达式:

re="^[0-9][0-9a-zA-Z!#$%^&/*'+-]+$"

然后用它作为:

s='1/' [[ $s =~ $re ]] && echo "good" || echo "bad" good

其实,在字符类工作就好了:

$ [[ "1/" =~ ^[0-9][/]+$ ]]; echo $? 0

bash(可能会使用perl / python):通过正则expression式过滤空格分隔的arg列表

bash(可能会使用perl / python):通过正则expression式过滤空格分隔的arg列表

我有一组正则expression式应该在空格分隔列表中的每个项目进行testing。

我希望这些物品能够在其中有空间,将逃脱。 所以:

abc def ghi jkl abc

包含4个项目, abc , def ghi , jkl和abc 。

如果我的正则expression式是

sorting范围Linux

将awk输出保存到variables

pipe道文件在Windows上传到哪里?

转换只包含特定标签的XML

如何根据第六栏的内容来勾选行

b k$ ^g

输出应该是

abc abc

看起来像grep -f可以让我在那里大部分的方式,但我必须处理的方式来处理逃脱的空间,所以我不能只是从空间到新行。

编辑:我想我可以使用sed来做一个逃脱空间意识到replace正常空间换行。 从换行符开始, tr就足够了。 想知道是否有人有更好的想法。

将信号捕获到进程组

如何检查sshd是否在远程机器上运行

以root身份编辑后以root身份保存文件

在sed中添加前导0

从linux shell脚本调用Rscript

我真的不明白你的物品是如何给的。

假装他们来自一个程序之谜的输出,在一行中,例如,

gnIoUrf@somewhere$ mystery abc def ghi jkl abc

你可以(文件myscript ):

#!/bin/bash output=() re=( 'b' 'k$' '^g' ) # array of your regexes read -aa for w in "${a[@]}"; do for r in "${re[@]}"; do if [[ $w =~ $r ]]; then output+=( "${w// /\ }" ) # replace space with backslash-space break fi done done echo "${output[@]}"

为了测试目的,我做了这个:

#!/bin/bash # file mystery echo 'abc def ghi jkl abc'

然后(在chmod +x mystery myscript ):

gnIoUrf@somewhere$ ./mystery abc def ghi jkl abc gnIoUrf@somewhere$ ./mystery | ./myscript abc abc

警惕 。 这将迟早会破,除非神秘总是输出体面的东西!

我认为它可以在没有任何外部效用的情况下进行处理。

首先把你的字符串放在一个数组中:

input=(abc 'def ghi' jkl abc)

然后运行这个for循环来验证你提供的正则表达式的输入:

for i in "${input[@]}"; do for r in 'b' 'k$' '^g'; do [[ "$i" =~ $r ]] && echo $i && break done done

OUTOUT:

abc abc

今天的关于正则expression式bash脚本bash 正则的分享已经结束,谢谢您的关注,如果想了解更多关于.htaccess重写正则expression式:匹配除“索引”、bash正则expression式在linux上工作,但不是solaris、Bash的正则expression式不接受斜杠、bash(可能会使用perl / python):通过正则expression式过滤空格分隔的arg列表的相关知识,请在本站进行查询。

本文标签: