有没有办法在.gitignore文件中使用扩展正则表达式(ERE)?例如,我想+在.gitignore文件中使用重复字符.有没有办法做到这一点?
我正在使用os.walk(目录)递归显示该目录中的所有文件.问题是我只需要在其名称中显示包含问题字符串的文件,并且还必须管理元字符.
我现在拥有的是:
for root, subdirs, files in os.walk(dir1):
for filename in files:
if substring in filename:
name_path = os.path.join(root,filename)
list.insert(END, name_path)
Run Code Online (Sandbox Code Playgroud)
这很好用,但如果 substring = *因为我没有包含'*'的文件,我的列表是空的.
那么,如果substring包含METACHAR ,我该如何使其工作?
例如,我设置了这些:
L = /[a-z,A-Z,ßäüöÄÖÜ]/
V = /[äöüÄÖÜaeiouAEIOU]/
K = /[ßb-zBZ&&[^#{V}]]/
Run Code Online (Sandbox Code Playgroud)
这样/(#{K}#{V}{2})/匹配"ßäÜ"在"azAZßäÜ".
有没有更好的方法来处理它们?
我可以将这些常量放在我的Ruby安装文件夹中某个文件的模块中,所以我可以在我在计算机上写的任何新脚本中包含/要求它们吗?(我是新手,我知道我弄糊涂这个术语;请纠正我.)
此外,我可以只获得元字符\L,\V和\K(或者在Ruby中没有设置的任何东西)在正则表达式中代表它们,所以我不必一直做那个字符串插值的东西吗?
有没有办法在编译正则表达式时切换编译或使用元字符?当前代码如下所示:
当前代码:
import re
the_value = '192.168.1.1'
the_regex = re.compile(the_value)
my_collection = ['192a168b1c1', '192.168.1.1']
my_collection.find_matching(the_regex)
result = ['192a168b1c1', '192.168.1.1']
Run Code Online (Sandbox Code Playgroud)
理想的解决方案如下:
import re
the_value = '192.168.1.1'
the_regex = re.compile(the_value, use_metacharacters=False)
my_collection = ['192a168b1c1', '192.168.1.1']
my_collection.find_matching(the_regex)
result = ['192.168.1.1']
Run Code Online (Sandbox Code Playgroud)
理想的解决方案是让re库处理元字符的禁用,以避免必须尽可能多地参与进程.
我有大量的数据,其中分隔符是反斜杠.我在R中处理它并且我很难找到如何拆分字符串,因为反斜杠是一个元字符.例如,字符串看起来像这样:
1128\0019\XA5\E2R\366\00=15
Run Code Online (Sandbox Code Playgroud)
我想沿着\角色分割它,但是当我运行strsplit命令时:
strsplit(tempStr, "\\")
Error in strsplit(tempStr, "\\") :
invalid regular expression '\', reason 'Trailing backslash'
Run Code Online (Sandbox Code Playgroud)
当我尝试使用"修复"选项时,它不会运行,因为它在反斜杠之后需要一些东西:
strsplit(tempStr, "\", fixed = TRUE)
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法使用其他程序预处理数据,因为数据是每天生成的.
我尝试了一些方法来匹配一个包含3次斜线但却无法工作的单词.以下是示例
@array = qw( abc/ab1/abc/abc a2/b1/c3/d4/ee w/5/a s/t )
foreach my $string (@array){
if ( $string =~ /^\/{3}/ ){
print " yes, word with 3 / found !\n";
print "$string\n";
}
else {
print " no word contain 3 / found\n";
}
Run Code Online (Sandbox Code Playgroud)
很少有macthing我尝试但没有一个工作
$string =~ /^\/{3}/;
$string =~ /^(\w+\/\w+\/\w+\/\w+)/;
$string =~ /^(.*\/.*\/.*\/.*)/;
Run Code Online (Sandbox Code Playgroud)
任何其他方式我可以匹配这种类型的字符串并打印字符串?
我试图通过组"%in%"和字符"@"拆分字符串.所有文档和我能找到的所有内容都表明括号是用于在R regex中进行分组的元字符.所以代码
> strsplit('example%in%aa(bbb)aa@cdef', '[(%in%)@]', perl=TRUE)
Run Code Online (Sandbox Code Playgroud)
应该给我
[[1]]
[1] "example" "aa(bbb)aa" "cdef"
Run Code Online (Sandbox Code Playgroud)
也就是说,它应该将括号留在"aa(bbb)aa"中,因为匹配表达式中的括号不会被转义.但相反它实际上给了我
[[1]]
[1] "example" "" "" "" "aa" "bbb" "aa" "cdef"
Run Code Online (Sandbox Code Playgroud)
好像括号不是元字符!这是怎么回事?我该如何解决?谢谢!
在strsplit中有和没有参数perl = TRUE都是如此.
我需要搜索可能包含许多元字符的模式。目前,我使用长正则表达式。
prodObjMatcher=re.compile(r"""^(?P<nodeName>[\w\/\:\[\]\<\>\@\$]+)""", re.S|re.M|re.I|re.X)
Run Code Online (Sandbox Code Playgroud)
(我的实际模式很长,因此我只粘贴了一些需要帮助的相关部分)
当我需要在一次重新编译中编写此类模式的组合时,这尤其痛苦。
有没有缩短样式长度的有效方法?
我在使用正则表达式替换元字符时遇到问题.我希望正则表达式替换元字符的短语是:
ley+sobre+propiedad+literaria+1847
Run Code Online (Sandbox Code Playgroud)
我使用的代码如下:
$file =~ s/\+/\s/; # --> Replace the +
但它似乎只取代了第一个元字符,结果是:
leysobre+propiedad+literaria+1847
Run Code Online (Sandbox Code Playgroud)
我用什么?
你知道为什么在一个简单的正则表达式模式中如果放一个*(量词)它与匹配器中的任何结果都不匹配,即使它实际上包含了字符a; (在任何情况下,它应该返回找到一个空字符串的结果,因为我正在使用" ").它适用于其他字符,例如r*和b*没有问题.我知道如果内容放在引号或括号之间,它就有效.("a*").虽然只是好奇地知道为什么它可以用b*没有引号而不用*没有引号.
码:
Pattern pat = Pattern.compile(args[0]);
Matcher match = pat.matcher(args[1]);
while (match.find())
{
System.out.println("Indeed this the information I need:"+ match.group());
System.out.println("Here it starts:"+match.start());
}
Run Code Online (Sandbox Code Playgroud)
我知道'a'是一个元字符,但'e'和'f'是和它们一起正常工作.
我作为输入插入:命令行中的args [0] = a*args [1] = abba.
任何的想法?提前致谢.
当我运行以下程序时,它没有给我任何结果("").
情景1: -
$var = "A STITCH IN TIME SAVES NINE";
if ($var =~ /[1..9]/i) {
print "FOUND\n"
}
Run Code Online (Sandbox Code Playgroud)
但是当我在'..'运算符之前和之后添加空格时,它会抛出"Found and is"作为结果.
情景: - 2
$var = "A STITCH IN TIME SAVES NINE";
if ($var =~ /[1 .. 9]/i) {
print "FOUND\n"
}
Run Code Online (Sandbox Code Playgroud)
谁能解释一下这里发生了什么?
我试图匹配两个都满足元字符的东西,需要在我的匹配模式中用作'Literal'. \Q假设在字符串中引用所有元字符直到\E...但它不起作用.
那是怎么回事?
这是给我带来麻烦的一条线: if (/\Q$prev\E/ !~ /\Q$ww[0]\E/) {