针对正则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 正则)
- .htaccess重写正则expression式:匹配除“索引”
- bash正则expression式在linux上工作,但不是solaris
- Bash的正则expression式不接受斜杠
- bash(可能会使用perl / python):通过正则expression式过滤空格分隔的arg列表
正则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式:匹配除“索引”
我试图创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
以下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 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列表
我有一组正则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列表的相关知识,请在本站进行查询。
本文标签: