Tag: 正则表达式

如何用正则表达式和Java计算文本中的音节

我有文本作为String ,需要计算每个单词的音节数。 我试图将所有文本拆分成单词数组,而不是单独处理每个单词。 我使用正则表达式。 但是音节的模式不能正常工作。 请建议如何更改它以计算正确的音节数。 我的初始代码。 public int getNumSyllables() { String[] words = getText().toLowerCase().split(“[a-zA-Z]+”); int count=0; List tokens = new ArrayList(); for(String word: words){ tokens = Arrays.asList(word.split(“[bcdfghjklmnpqrstvwxyz]*[aeiou]+[bcdfghjklmnpqrstvwxyz]*”)); count+= tokens.size(); } return count; }

Eclipse说这个正则表达式中存在非法重复

if(possTape.matches(“{\\(\\d+,\”[^:=;@\”\\)\\(\\{\\}\\[\\]]+\”\\)(,\\(\\d+,\”[^:=;@\”\\)\\(\\{\\}\\[\\]]+\”\\))+}”)) 但是,这是什么意思? 我已经在regexpal上测试了这个正则表达式(进行了调整以使它像Java一样工作)但是我没有看到哪里有非法重复?

我可以使用正则表达式来匹配特定字符的每三次出现吗?

我有一个包含一些分隔值的字符串: 1.95;1.99;1.78;10.9;11.45;10.5;25.95;26;45;21.2 我想要实现的是分号每隔三次出现一次分裂,所以我得到的String[]应该包含这个: result[0] = “1.95;1.99;1.78”; result[1] = “10.9;11.45;10.5”; result[2] = “25.95;26;45”; result[3] = “21.2”; 到目前为止,我已经尝试了几种正则表达式解决方案,但我所能得到的只是找到半冒号之间的任何模式。 例如: (?<=^|;)[^;]*;?[^;]*;?[^;]* 哪个匹配我想要的值,这样就不可能使用split()或者我错过了什么? 不幸的是,我只能提供使用的模式,并且不可能通过上述模式的结果添加一些循环。

Java正则表达式匹配方括号

我正在尝试使用正则表达式(java replaceAll)执行以下操作: **Input:** Test[Test1][Test2]Test3 **Output** TestTest3 简而言之,我需要删除方括号内的所有内容,包括方括号。 我正在尝试这个,但它不起作用: \\[(.*?)\\] 你能帮忙吗? 谢谢, 窗扇

带有可选字符串的Java正则表达式模式

我有这样的字符串: something something [[abcd]] blah blah something something [[xyz|abcd]] blah blah 在这两种情况下我想要的是: something something abcd blah blah 如何在Java中仅使用1个正则表达式模式? 我可以用这个做第一个案例: Pattern pattern = Pattern.compile(“\\[\\[(.+?)\\]\\]”); Matcher m = patternLinkRemoval.matcher(text); return m.replaceAll(“$1”);

如何使用扫描仪和模式类匹配文本中的模式?

我想查找我的文本文件中是否存在特定模式。 即时通讯使用以下类: java.util.regex.Pattern and java.util.Scanner; 我的示例文本行是 String Line=”DBREF 1A1F A 102 190 UNP P08046 EGR1_MOUSE 308 396″; 而且,我想匹配以下类型的模式: A 102 190 其中,在A的位置az或AZ但是单个包机。 在102的位置任何整数和任何长度。 在190的位置任何整数和任何长度。 而且,我的模式匹配代码是: Scanner sr=new Scanner(Line); Pattern p = Pattern.compile(“\\s+([a-zA-Z]){1}\\s+\\d{1,}\\s+\\d{1,}\\s+”); while(sr.hasNext(p)) { System.out.println(“Pattern exists”); System.out.println(“Matched String : “+sr.next(p)); } 但是,即使它存在,模式也不匹配.. 我认为问题在于我的模式字符串: \\s+([a-zA-Z]){1}\\s+\\d{1,}\\s+\\d{1,}\\s+” 任何人,Plz帮助我应该使用什么模式字符串????

正则表达式,用于检查允许的字符在Java中不起作用

我有以下方法来检查允许的字符: private boolean checkIfAllCharsAreValid(String test) { boolean valid = false; if (test.matches(“^[a-zA-Z0-9,.;:-_’\\s]+$”)) { valid = true; } return valid; } 但如果test有字符-在其中匹配返回false。 我必须逃避- ?

替换与正则表达式中的字符不匹配的字符

我有这个正则表达式: private static final String SPACE_PATH_REGEX =”[az|AZ|0-9|\\/|\\-|\\_|\\+]+”; 我检查我的字符串是否匹配此正则表达式,如果不是,我想用“_”替换所有不在这里的字符。 我尝试过: private static final String SPACE_PATH_REGEX_EXCLUDE = “[~az|AZ|0-9|\\/|\\-|\\_|\\+]+”; if (myCompanyName.matches(SPACE_PATH_REGEX)) { myNewCompanySpaceName = myCompanyName; } else{ myNewCompanySpaceName = myCompanyName.replaceAll( SPACE_PATH_REGEX_EXCLUDE, “_”); } 但是它不起作用……所以在第二个正则表达式中,“〜”似乎没有省略下面的字符。 任何想法?

Java – 由Regex过滤列表条目

我的代码如下所示: List filterList(List list, String regex) { List result = new ArrayList(); for (String entry : list) { if (entry.matches(regex)) { result.add(entry); } } return result; } 它返回一个列表,其中只包含与regex匹配的条目。 我想知道是否有这样的内置function: List filterList(List list, String regex) { List result = new ArrayList(); result.addAll(list, regex); return result; }

在java中基于空格分割一个字符串,用双引号和单引号转义那些空格以及前面带\

我对正则表达式完全不熟悉。 我正在尝试组合一个表达式,该表达式将使用未被单引号或双引号括起的所有空格分割示例字符串,并且前面没有’\’ 例如:- He is a “man of his” words\ always 必须拆分为 He is a “man of his” words\ always 我明白 List matchList = new ArrayList(); Pattern regex = Pattern.compile(“[^\\s\”‘]+|\”[^\”]*\”|'[^’]*'”); Matcher regexMatcher = regex.matcher(StringToBeMatched); while (regexMatcher.find()) { matchList.add(regexMatcher.group()); } l使用未被单引号或双引号括起的所有空格拆分示例字符串 如果前面有一个\ _,那么如何合并忽略空白区域的第三个条件?