我的文字如下:
לשלום קוראים לי משהmy test is עלות 39.40, כל מיני data 1.1.2015 ויש גם data 123456 מידע
这个文本有希伯来语和英文字符,我需要删除除6位数字以外的所有字符(可能是5,这个数字:123456)。
你能帮我正则表达吗?
试过:
String patternS = "[אבגדהוזחטיכךלמםנןסעפףצץקרשתa-fA-F0-9]{5,10}.*";
Pattern pattern = Pattern.compile(patternString);
没有成功
答案 0 :(得分:0)
要匹配除数字之外的所有内容:
\d+(?:[^\d]\d+)+|[\p{L}\p{M}\p{Z}\p{P}\p{S}\p{C}]+
String resultString = subjectString.replaceAll("\\d+(?:[^\\d]\\d+)+|[\\p{L}\\p{M}\\p{Z}\\p{P}\\p{S}\\p{C}]+", "");
答案 1 :(得分:0)
这将在你的字符串中为你提供每6个didgit组合。
(\d{6,6})
我们无法为您提供更详细的正则表达式,因为我们现在知道这些字符串的模式。 如果总是存在"数据"前缀你也可以使用它来使模式更准确:
data (\d{6,6})
答案 2 :(得分:0)
尝试这样的事情:
String patternS = "(\d{5,6})";
Pattern pattern = Pattern.compile(patternS);
Matcher m = pattern.matcher(yourText);
int number = Integer.parseInt(m.group(1));
其中yourText
是您想要匹配的希伯来语/英语文本。
答案 3 :(得分:0)
这适用于这个具体的例子。
String s = " לשלום קוראים לי מש my test is עלות 39.40, כל מיני data 1.1.2015 ויש גם data 123456 מידע1234";
System.out.println(s.replaceAll(".*\\b(\\d{5,6})\\b.*", "$1"));