我有一个大文本文件,我正在阅读,我需要找出一些单词出现多少次.例如,这个词the.我逐行做这一行,每一行都是一个字符串.
我要确保我只算合法the的-在the中other起不到作用.这意味着我知道我需要以某种方式使用正则表达式.到目前为止我尝试的是:
numSpace += line.split("[^a-z]the[^a-z]").length;
Run Code Online (Sandbox Code Playgroud)
我意识到正则表达式目前可能不正确,但我试过没有那个,只是试图找到这个词的出现,the我也得到了错误的数字.我认为这会将字符串拆分成一个数组,并且该数组被拆分的次数是字符串中单词的次数.任何想法,我将不胜感激.
更新:鉴于一些想法,我想出了这个:
numThe += line.split("[^a-zA-Z][Tt]he[^a-zA-Z]", -1).length - 1;
Run Code Online (Sandbox Code Playgroud)
虽然仍然有一些奇怪的数字.我能够获得准确的一般计数(没有正则表达式),现在我的问题是正则表达式.
要检查用户输入的英文名称是否有效,我通常会将输入与正则表达式匹配,例如[A-Za-z].但是如果使用utf8编码需要支持多语言(如中文,日文等),我怎么能这样做呢?
有正则表达式接受任何符号吗?
编辑:为了澄清我正在寻找..我想建立一个正则表达式将接受空格的任何数量和它必须至少含有一个符号(例如,"'$£等.)或(不异或)至少1个字符.
我需要能够在单引号之间替换所有出现的单词"和".例如,在字符串中将"and"替换为"XXX":
This and that 'with you and me and others' and not 'her and him'
结果是:
This and that 'with you XXX me XXX others' and not 'her XXX him'
我已经能够提出几乎可以得到所有情况的正则表达式,但是我在两组引用文本之间没有"和".
我的代码:
String str = "This and that 'with you and me and others' and not 'her and him'";
String patternStr = ".*?\\'.*?(?i:and).*?\\'.*";
Pattern pattern= Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(str);
System.out.println(matcher.matches());
while(matcher.matches()) {
System.out.println("in matcher");
str = str.replaceAll("(?:\\')(.*?)(?i:and)(.*?)(?:\\')", "'$1XXX$2'");
matcher = pattern.matcher(str);
}
System.out.println(str);
Run Code Online (Sandbox Code Playgroud) 我想创建一个Java正则表达式来获取以大写字母开头的所有单词,然后是大写或小写字母,但这些字母可能包含重音符号.
例子 :
哪里
Àdónde
RAPIDO
阿斯特
你能帮帮我吗?
我需要创建一个Pattern将匹配所有Unicode数字和字母字符的。到目前为止,我有"\\p{IsAlphabetic}|[0-9]"。
第一部分对我来说很好,在将非拉丁字符识别为字母字符方面做得很好。问题是下半年。显然,它仅适用于阿拉伯数字。人物类\\d和\p{Digit}也是[0-9]。的Javadoc Pattern似乎没有提及Unicode数字的字符类。有人对此问题有好的解决方案吗?
对于我而言,我会接受的方式,以配合集中的所有字符,其中Character.isDigit的回报true。
我希望将所有表达式与一个空格匹配.目前,我正在使用[^\\s]*\\s[^\\s]*.但这似乎不是一个非常好的方式.
在Java正则表达式中,它具有"\ B"作为非单词边界.
http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
如果我有'char',我怎么检查它是非字边界?
谢谢.
我正在我的课堂上完成一项任务,这需要我创造一个财富游戏之轮.我正在研究getDisplayedPhrase我将解释的方法.所以对于这个程序,我有一个随机短语,例如
"this is a question, thanks for helping!"
我希望这个短语改为.
"**** ** * ********, ****** *** *******!"
这就是短语应该在他们猜测之前的样子.你可以看到我只想改变字母,所以我创建了一个
private static final String alpha ="abcdefghijklmnopqrstuvwxyz"
Run Code Online (Sandbox Code Playgroud)
避免任何标点符号.这是我到目前为止:
public String getDisplayedPhrase() {
for (int i = 0; i<secretPhrase.length(); i++){
I don't know what to put here and what method to use???
I'm thinking of using charAt() or indexOf()
}
return displayedPhrase;
}
Run Code Online (Sandbox Code Playgroud) 任何人都可以推荐符合以下规则的正则表达式:
我想要匹配的字符串看起来像这样
LONDON 10 Downing St, London
或这个
NEW YORK 2859 Broadway, New York, NY 10025
当我通过每一行时,我希望能够匹配伦敦和纽约这两个词.
PS我在Java中这样做