我写了一个正则表达式来在某些字符(和#)首次出现后省略字符
String number = "(123) (456) (7890)#123";
number = number.replaceAll("[,#](.*)", ""); //This is the 1st regex
然后第二个正则表达式仅获取数字(删除空格和其他非数字字符)
number = number.replaceAll("[^0-9]+", ""); //This is the 2nd regex
输出:1234567890
我如何将两个正则表达式合并为一个,就像将O / p从第一个正则表达式传递到第二个正则表达式一样。
最佳答案
因此,您需要删除除数字以外的所有符号以及第一个哈希符号或逗号之后的整个字符串。
您不能仅使用|
运算符来连接模式,因为其中一种模式隐式地锚定在字符串的末尾。
由于tegex引擎从左到右处理字符串,因此您需要首先除去数字和带逗号的任何符号,然后再添加其他选项以将逗号或哈希与它们后面的任何文本匹配。如果输入中包含换行符,请使用DOTALL修饰符。
用
(?s)[,#].*$|[^#,0-9]+