我正在尝试计算整个目录中的特定单词出现次数.这可能吗?
比如说有一个包含100个文件的目录,所有文件的文件中都可能包含"aaa"字样.我如何计算该目录下所有文件中"aaa"的数量?
我尝试过类似的东西:
zegrep "xception" `find . -name '*auth*application*' | wc -l
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
在准确探索Java标识符中允许哪些字符时,我偶然发现了一些非常好奇的东西,似乎几乎肯定是一个bug.
我希望发现Java标识符符合以下要求:它们以具有Unicode属性的字符开头,ID_Start后跟具有该属性的字符,并且ID_Continue为前导下划线和美元符号授予例外.事实证明并非如此,而且我发现与我听说过的普通标识符或其他任何其他想法极为不同.
请考虑以下演示,证明Java标识符中允许使用ASCII ESC字符(八进制033):
$ perl -le 'print qq(public class escape { public static void main(String argv[]) { String var_\033 = "i am escape: \033"; System.out.println(var_\033); }})' > escape.java
$ javac escape.java
$ java escape | cat -v
i am escape: ^[
Run Code Online (Sandbox Code Playgroud)
不过,情况甚至更糟.实际上,几乎无限恶化.甚至允许NULL!还有数千个甚至不是标识符字符的其他代码点.我在Solaris,Linux和运行Darwin的Mac上测试了这一点,并且都给出了相同的结果.
这是一个测试程序,它将显示Java非常不允许作为合法标识符名称的一部分的所有这些意外代码点.
#!/usr/bin/env perl
#
# test-java-idchars - find which bogus code points Java allows in its identifiers
#
# usage: test-java-idchars [low high]
# e.g.: test-java-idchars 0 255
#
# …Run Code Online (Sandbox Code Playgroud) 如何将法语和俄语西里尔字母字符与正则表达式匹配?我只想做字母字符,没有数字或特殊字符.现在我有
[A-ZA-Z]
我在C#和MVC上相当新,并且在某些场合使用过lambdas,例如匿名方法和LINQ.
通常我看到lambda表达式看起来像这样:
(x => x.Name), (x => { Console.WriteLine(x))
Run Code Online (Sandbox Code Playgroud)
我明白lambda ="去".我从未见过没有使用左参数的lambda表达式.
我不知道如何翻译这个lambda表达式
@Html.DisplayFor(modelItem => item.FirstName)
Run Code Online (Sandbox Code Playgroud)
任何人都可以为我揭开这一点吗?不应该这样
(modelItem => modelItem.FirstName)?
Run Code Online (Sandbox Code Playgroud)
我从Microsoft的ASP.NET MVC入门教程中得到了这个.
我在数据库中有一个发誓单词的字典,以下作品很棒
preg_match_all("/\b".$f."(?:ing|er|es|s)?\b/si",$t,$m,PREG_SET_ORDER);
Run Code Online (Sandbox Code Playgroud)
$t是输入文本,简单地说,$f = preg_quote("punk"); "punk"是来自数据库字典,所以在循环的这一点上表达式如下
preg_match_all("/\bpunk(?:ing|er|es|s)?\b/si",$t,$m,PREG_SET_ORDER);
Run Code Online (Sandbox Code Playgroud)
preg_quote替换符号,例如.#用\\#这样的表达是逃过一劫,但如果词典的检查如."F@CK"或"A$$"与上述表达式输入字符串没有检测到这些符号,我都a$$和f@ck在词典中,但它们不工作.如果我删除preg_quote()单词,则正则表达式无效,因为这些符号不会被转义.
有关如何检测的任何建议"a$$"???
编辑:
所以我想那些没有按预期工作的表达将是例如.
preg_match_all("/\bf\@ck(?:ing|er|es|s)?\b/si",$t,$m,PREG_SET_ORDER);
Run Code Online (Sandbox Code Playgroud)
哪个应该找到f @ ck in$t
更新:
这是我的用法,简单地说; 如果有$m替换它们的匹配"\*\*\*\*",则整个块在循环中通过字典中的每个单词,$f是字典单词并且$t是输入
$f = preg_quote($f);
preg_match_all("/\b$f(?:ing|er|es|s)?\b/si",$t,$m,PREG_SET_ORDER);
if (count($m) > 0) {
$t = preg_replace("/(\b$f(?:ing|er|es|s)?\b)/si","\*\*\*\*\*",$t);
}
Run Code Online (Sandbox Code Playgroud)
更新:看,var_dump:
preg_quote($f) = string(5) "a\$\$"
$t = string(18) "You're such an a$$"
expression = string(29) …Run Code Online (Sandbox Code Playgroud) 计算某个字符串出现在较大字符串中的次数的最快方法是什么?我最好的猜测是用任何东西替换该字符串的所有实例,计算长度的差异并除以子字符串的长度,但这似乎相当慢,我需要分析大量数据.
如果我将一个角色转换为byte然后再回到char那个角色,那个角色会神秘地消失并成为别的东西.这怎么可能?
这是代码:
char a = 'È'; // line 1
byte b = (byte)a; // line 2
char c = (char)b; // line 3
System.out.println((char)c + " " + (int)c);
Run Code Online (Sandbox Code Playgroud)
一直到第2行一切都很好:
在第1行,我可以在控制台中打印"a",它会显示"È".
在第2行,我可以在控制台中打印"b",它会显示-56,即200,因为字节已签名.200是"È".所以它仍然很好.
但第3行有什么不对?"c"成为别的东西,程序打印出来? 65480.这是完全不同的东西.
我应该在第3行写什么才能得到正确的结果?
a* 意味着零个或多个实例:权利?
那么为什么会$_ = "a"; s/a*/e/g产生:ee
可能的答案:它正在替换字符串:"a"with:"e",它正在替换空字符串:""with:"e".或者它正在取代仅仅缺少一封信:a带有一封信:e或它取代了"零次出现":a与:e
好的,但是:
$_ = "b"; s/a*/e/g 生产: ebe
这似乎是在更换空字符串左:b和还空字符串的权利:b
好.但那为什么不这样做:" a"?为什么它不更换空字符串的左:a和还空字符串的右侧:和也的信:一个本身得到:eee?
有几个零次出现:a左侧是右侧!
我有一些情况,\u00a0当编码为utf-8 json时,来自html textarea或输入的用户输入数据有时会发送(非中断空格)而不是空格.
我认为这是Firefox中的一个错误,因为我知道用户不是故意放入不间断的空格而不是空格.
Ruby中还有两个错误,其中一个可以用来对抗另一个.
无论出于何种原因\s不匹配\u00a0.
但是[^[:print:]],这绝对不应该匹配)并且\xC2\xA0两者都匹配,但我认为那些是不太理想的方式来处理这个问题.
是否有其他建议可以解决这个问题?