标签: regex-lookarounds

向网址添加尾随斜杠

在Google上添加尾随斜杠.htaccess有很多结果,但我发现的所有示例都需要使用您的域名,如下例所示:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !example.php
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301]
Run Code Online (Sandbox Code Playgroud)

我的问题是硬编码的域名不能在我的本地开发机器上运行.有没有办法在没有明确告诉mod_rewrite域名的情况下添加尾部斜杠?

regex .htaccess mod-rewrite regex-negation regex-lookarounds

4
推荐指数
1
解决办法
5047
查看次数

在if-elsif-else-end中使用REGEX

我正在尝试使用REGEX来做一个if-then-elsif-then-else-then-end 示例:

s = "foobar123"
if end of s is 3
  then return "foo"
elsif end of s is 2 
  then return "bar"
else
  then return "foobar"
end
Run Code Online (Sandbox Code Playgroud)

(?(?=condition)(then1|then2|then3)|(else1|else2|else3))http://www.regular-expressions.info/conditional.html找到了,但在这种情况下不知道如何使它工作.这是我的正则表达式if-then-else-then-end:

/(?=.*[3])(foo)|(bar)/
Run Code Online (Sandbox Code Playgroud)
  • 如果字符串以3结尾
  • 然后返回foo
  • 否则返回吧

我认为可以写另一个if-else在其他父级,但不能:(

regex regex-lookarounds

4
推荐指数
1
解决办法
2万
查看次数

这是.NET的RegEx引擎中的错误吗?

我有两个正则表达式,用于Regex.Split:

(?<=\G[^,],[^,],)
Run Code Online (Sandbox Code Playgroud)

(?<=\G([^,],){2})
Run Code Online (Sandbox Code Playgroud)

拆分字符串时"A,B,C,D,E,F,G,",第一个字符串会导致:

A,B, 
C,D, 
E,F, 
G, 
Run Code Online (Sandbox Code Playgroud)

第二个结果是:

A,B, 
A, 
C,D, 
C, 
E,F, 
E, 
G, 
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?我认为这(X){2}总是相当于XX,但我不确定了.在我的实际问题中,我需要做一些比较复杂的事情,我需要做六十九次,所以重复模式不太理想.

.net regex regex-lookarounds

4
推荐指数
1
解决办法
168
查看次数

向后寻找字符串或字符的开头

命令

re.compile(ur"(?<=,| |^)(?:next to|near|beside|opp).+?(?=,|$)", re.IGNORECASE)
Run Code Online (Sandbox Code Playgroud)

抛出一个

sre_constants.error: look-behind requires fixed-width pattern

我的程序中出现错误,但是regex101显示它很好。

我在这里尝试做的是匹配地址中的地标(每个地址在单独的字符串中),例如:

  • “ Opp foobar,foocity”->必须与“ Opp foobar”匹配
  • “脚步声,靠近barplace,barcity”->必须匹配“ near barplace”
  • “购物中心,购物者停止,愚蠢”->必须不匹配
  • “ Fooplace,opp barplace”->必须与“ opp barplace”匹配

后面是避免opp在其中匹配单词(如字符串3)。

为什么会引发该错误?除了我要找的东西以外,还有其他选择吗?

regex python-2.7 regex-lookarounds

4
推荐指数
1
解决办法
884
查看次数

用于获取字符后字符串中所有数字的正则表达式

我试图解析以下字符串并返回最后一个方括号后的所有数字:

C9: Title of object (foo, bar) [ch1, CH12,c03,4]
Run Code Online (Sandbox Code Playgroud)

所以结果应该是:

1,12,03,4
Run Code Online (Sandbox Code Playgroud)

字符串和数字会改变.重要的是得到'['之后的数字,不管它前面有什么字符(如果有的话).(我在python中需要这个,所以也没有原子组!)我已经尝试了我能想到的一切,包括:

 \[.*?(\d) = matches '1' only
 \[.*(\d) = matches '4' only
 \[*?(\d) = matches include '9' from the beginning
Run Code Online (Sandbox Code Playgroud)

等等

任何帮助是极大的赞赏!

编辑:我也需要这样做而不使用str.split().

python regex python-3.x regex-greedy regex-lookarounds

4
推荐指数
1
解决办法
3007
查看次数

4
推荐指数
2
解决办法
4686
查看次数

如何匹配任何出现的字符,除非它出现两次?

我试图在一个术语的末尾匹配任何出现的加号,除非它恰好发生了两次.例如,在加号c+c++++应匹配,而不是c++.

\+{1}$|\+{3,}$显然,天真的方法不起作用.你有更好的主意吗?

java regex regex-negation regex-lookarounds

4
推荐指数
1
解决办法
57
查看次数

正则表达式匹配两个{}之间的所有内容

我在这里看到了不同的答案,但不幸的是,这些答案都不适合我的情况.所以我希望你不介意.

所以我需要匹配两个大括号{}之间的所有内容,除了匹配以@开头且没有这些大括号的情况,例如:

  1. "这是一个超级文本{ match_this }"
  2. "{ match_this }"
  3. "这是另一个例子@ {deal_with_it}"

这是我的测试字符串,1,2,3有效,而最后一个不应该是:

  1   {eww}
  2   r23r23{fetwe}
  3   #{d2dded}
  4   @{d2dded}
Run Code Online (Sandbox Code Playgroud)

我正在尝试:

(?<=[^@]\{)[^\}]*(?=\})
Run Code Online (Sandbox Code Playgroud)

然后只有第2和第3个选项匹配(没有第一个) https://regex101.com/r/qRInUf/2/

然后我在尝试:

\{(.*?)\} or [^@]\{(.*?)\}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我都无法匹配1,2,3值 https://regex101.com/r/uYRtLD/1

在此先感谢您的任何建议.

编辑:这是为java.

java regex regex-negation regex-group regex-lookarounds

4
推荐指数
1
解决办法
125
查看次数

使用正则表达式匹配不以某个字母开头的单词

我正在学习正则表达式,但无法在python中找到正确的正则表达式来选择以特定字母开头的字符。

下面的例子

text='this is a test'
match=re.findall('(?!t)\w*',text)

# match returns
['his', '', 'is', '', 'a', '', 'est', '']

match=re.findall('[^t]\w+',text)

# match
['his', ' is', ' a', ' test']
Run Code Online (Sandbox Code Playgroud)

预期: ['is','a']

python regex regex-negation regex-lookarounds

4
推荐指数
1
解决办法
1182
查看次数

正则表达式断言仅在先行和后备方式中起作用

在尝试提出一些解决此问题的示例时,我提出了以下代码段:

my regex key {^^ <![#-]> \d+ }
say "333" ~~ &key;                         # OUTPUT: «?333??»
say "#333" ~~ &key;

say '333$' ~~ m/ \d+ <?[$]>/;              # OUTPUT: «?333??»
say '333' ~~ m/ \d+ <?[$]>/;
say '$333' ~~ m/<?[$]> \d+ /;
Run Code Online (Sandbox Code Playgroud)

只有表示为return的语句?333?似乎<! >可以用作先行断言,而<? >只能用作零宽度后向断言。是这样吗 如果是这样,创建正向超前断言和负向向后断言的方式是什么?

regex perl6 regex-lookarounds raku

4
推荐指数
1
解决办法
80
查看次数