您可以通过使用括号将表达式分隔开来在正则表达式中形成匹配的组。在下面的正则表达式中,第一组匹配数字,第二组匹配英语字母-
(\\d)([A-Za-z])
简而言之,它匹配输入字符串中数字后跟字母的部分。
由于表达式$1表示Group1,$2表示Group2,如果将上述Java正则表达式替换为$1 $2,则使用replace()
(String类的)方法将在数字和给定输入字符串中的单词之间添加空格,当数字为然后是一个字。
import java.util.Scanner; public class SampleTest { public static void main( String args[] ) { String regex = "(?<=[A-Za-z])(?=[0-9])|(?<=[0-9])(?=[A-Za-z])"; //读取用户输入 Scanner sc = new Scanner(System.in); System.out.println("Enter input text: "); String input = sc.nextLine(); //String result = input.replaceAll(regex, " "); String result = input.replaceAll( "(\\d)([A-Za-z])", "$1 $2" ); System.out.println(result); } }
输出结果
Enter input text: 21This 23is 56sample 99text 21 This 23 is 56 sample 99 text
同样,您可以在给定的文本中的数字和字母之间添加空格,而无需用空格替换以下表达式的顺序-
(?<=[A-Za-z])(?=[0-9])|(?<=[0-9])(?=[A-Za-z])
import java.util.Scanner; public class SampleTest { public static void main( String args[] ) { String regex = "(?<=[A-Za-z])(?=[0-9])|(?<=[0-9])(?=[A-Za-z])"; //读取用户输入 Scanner sc = new Scanner(System.in); System.out.println("Enter input text: "); String input = sc.nextLine(); //String result = input.replaceAll(regex, " "); String result = input.replaceAll( regex, " " ); System.out.println(result); } }
输出结果
Enter input text: 21This23is56sample99text 21 This 23 is 56 sample 99 text