相关疑难解决方法(0)

为什么正则表达式的"非捕获"组不起作用

在下面的代码片段中,匹配结果中应忽略非捕获组"(?:aaa)",因此结果应该"_bbb"只是.

但是,我得到"aaa_bbb"了匹配的结果; 只有当我指定组(2)时才会显示"_bbb".

>>> import re
>>> s = "aaa_bbb"
>>> print(re.match(r"(?:aaa)(_bbb)", s).group())

aaa_bbb
Run Code Online (Sandbox Code Playgroud)

python regex

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

?:正则表达式中的表示法

对于我的一个类,我必须描述以下正则表达式:

\b4[0-9]{12}(?:[0-9]{3})\b
Run Code Online (Sandbox Code Playgroud)

我知道它选择一个数字:从4开始,后跟12位数字(每个在0-9之间),然后是另外3位数字.

我不明白的是带分号的问号(?:....).我试过在线查找这意味着什么,但我发现的链接有些令人困惑; 我希望有人可以快速了解问号在这个例子中的作用.

regex

44
推荐指数
2
解决办法
5万
查看次数

使用正则表达式验证数值范围

我的输入数字是一个int.但输入数字必须在-2055到2055的范围内,我想通过使用正则表达式来检查.

那么无论如何要写一个正则表达式来检查一个数字是否在(-2055,2055)中?

if语句用于检查数字是否在范围内更容易.但是我正在写一个解释器,所以我应该使用正则表达式来检查输入数字

regex ocaml

29
推荐指数
6
解决办法
7万
查看次数

在正则表达式中捕获组

我正在探索在Regex中捕获组,我对它缺乏文档感到困惑.对于前者,任何人都可以告诉我两个正则表达式之间的区别:

/(?:madhur)?/
Run Code Online (Sandbox Code Playgroud)

/(madhur)?/
Run Code Online (Sandbox Code Playgroud)

按照我的意见,?在第二个建议madhur在字符串中匹配零或一次.

第一个与第二个有什么不同?

javascript regex

27
推荐指数
3
解决办法
5万
查看次数

python中的'负'模式匹配

我有以下输入,

OK SYS 10 LEN 20 12 43
1233a.fdads.txt,23 /data/a11134/a.txt
3232b.ddsss.txt,32 /data/d13f11/b.txt
3452d.dsasa.txt,1234 /data/c13af4/f.txt
.
Run Code Online (Sandbox Code Playgroud)

我想提取包含" OK SYS 10 LEN 20"的行和包含单个"."(点)的最后一行之外的所有输入.也就是说,我想提取以下内容

1233a.fdads.txt,23 /data/a11134/a.txt
3232b.ddsss.txt,32 /data/d13f11/b.txt
3452d.dsasa.txt.1234 /data/c13af4/f.txt
Run Code Online (Sandbox Code Playgroud)

我试过以下,

for item in output:
    matchObj = re.search("^(?!OK) | ^(?!\\.)", item)
    if matchObj:
        print "got item "  + item
Run Code Online (Sandbox Code Playgroud)

但它不起作用,因为它不会产生任何输出.

python regex

22
推荐指数
3
解决办法
9万
查看次数

什么?:在正则表达式中做

我有一个看起来像这样的正则表达式

/^(?:\w+\s)*(\w+)$*/
Run Code Online (Sandbox Code Playgroud)

什么是?:

regex

20
推荐指数
3
解决办法
1万
查看次数

.htaccess拒绝访问特定文件?超过一个

我可以使用.htaccess禁用对文件的访问,但我不知道如何禁止查看多个文件(直接,不是来自包含)

它们是.php所以我无法禁用文件类型(就像在线的唯一教程说的那样..)

<FILES ... ? 

</FILES>
Run Code Online (Sandbox Code Playgroud)

或者其他东西..例如"home.php,file.php,test.php"如何禁止访问带有该标签的所有三个文件?或类似的,请帮忙!

php apache security .htaccess file

19
推荐指数
3
解决办法
2万
查看次数

Python re.findall表现得很奇怪

源字符串是:

# Python 3.4.3
s = r'abc123d, hello 3.1415926, this is my book'
Run Code Online (Sandbox Code Playgroud)

这是我的模式:

pattern = r'-?[0-9]+(\\.[0-9]*)?|-?\\.[0-9]+'
Run Code Online (Sandbox Code Playgroud)

但是,re.search可以给我正确的结果:

m = re.search(pattern, s)
print(m)  # output: <_sre.SRE_Match object; span=(3, 6), match='123'>
Run Code Online (Sandbox Code Playgroud)

re.findall 只是转出一个空列表:

L = re.findall(pattern, s)
print(L)  # output: ['', '', '']
Run Code Online (Sandbox Code Playgroud)

为什么不能re.findall给我预期的清单:

['123', '3.1415926']
Run Code Online (Sandbox Code Playgroud)

python regex

18
推荐指数
2
解决办法
2670
查看次数

Python正则表达式 - 为什么字符串结尾($和\ Z)不适用于组表达式?

在Python 2.6中.似乎字符串结束的标志$\Z不符合组表达式兼容.举个例子

import re
re.findall("\w+[\s$]", "green pears")
Run Code Online (Sandbox Code Playgroud)

回报

['green ']
Run Code Online (Sandbox Code Playgroud)

(所以$实际上不起作用).并使用

re.findall("\w+[\s\Z]", "green pears")
Run Code Online (Sandbox Code Playgroud)

导致错误:

/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/re.pyc in findall(pattern, string, flags)
    175 
    176     Empty matches are included in the result."""
--> 177     return _compile(pattern, flags).findall(string)
    178 
    179 if sys.hexversion >= 0x02020000:

/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/re.pyc in _compile(*key)
    243         p = sre_compile.compile(pattern, flags)
    244     except error, v:
--> 245         raise error, v # invalid expression
    246     if len(_cache) >= _MAXCACHE:
    247         _cache.clear()

error: internal: unsupported set operator
Run Code Online (Sandbox Code Playgroud)

为什么它会这样运作以及如何四处走动?

python regex

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

正则表达式| 闰年等等

我最近一直在寻找一个正则表达式来做一些客户端日期检查,但我找不到一个能满足以下条件的表达式:

  • 范围从1800 - 现在
  • 使用闰年执行正确的日期检查
  • MM/DD/YYYY表格
  • 无效的日期检查

(这些限制超出了我的范围,并且是客户的要求,尽管我努力说服他们这不是最好的路线)

当前代码:

$('input').keyup(function()
{
       var regex = /^(?:(0[1-9]|1[012])[\/.](0[1-9]|[12][0-9]|3[01])[\/.](18|19|20)[0-9]{2})$/;
       $(this).toggleClass('invalid',!regex.test($(this).val()));    
});
Run Code Online (Sandbox Code Playgroud)

更新:

我应该注意,这主要是为了看看这样的正则表达式是否可行(因为在这个问题上使用正则表达式不是我的选择).我知道验证日期的其他(和更好的)选项,但是如前所述 - 这是通过正则表达式查看是否可能.

javascript regex datetime

11
推荐指数
3
解决办法
2万
查看次数

标签 统计

regex ×9

python ×4

javascript ×2

.htaccess ×1

apache ×1

datetime ×1

file ×1

ocaml ×1

php ×1

security ×1