O que é uma expressão regular
Expressões regulares são especificações que podem ser usadas para correspondência e substituição de padrões. Uma expressão regular é um padrão literal composto por caracteres comuns (como caracteres A a Z) e caracteres especiais (metacaracters). É usado para descrever uma ou mais cordas a serem correspondentes ao procurar o corpo de um literal. A expressão regular atua como um modelo para corresponder a um padrão de caracteres com a string pesquisada.
Java usa expressões regulares para extrair dados
Expressões regulares Java são muito úteis. Antes, eles costumavam dividir um grande texto de txt de 3m em vários textos pequenos. As palavras escritas em C# são muito concisas e o código é de apenas cerca de vinte linhas. Eu os escrevi em Java hoje. Com certeza, Java é muito prolixo.
Não vou postar o código para dividir o arquivo. Vou postar principalmente como usar expressões regulares para agrupar seqüências grandes:
Por exemplo, agora existe um arquivo de texto endlist.txt com o seguinte conteúdo:
1300102, Beijing 1300103, Beijing 1300104, Beijing 1300105, Beijing 1300106, Beijing 1300107, Beijing 1300108, Beijing 1300109, Beijing 1300110, Beijing 1300111, Beijing 1300112, Beijing 1300113, Beijing 1300114, Beijing 1300115, Pequim 1300116, Pequim 1300117, Pequim 1300118, Pequim 1300119, Pequim
O número de sete dígitos representa os sete primeiros dígitos do número de telefone celular, e os caracteres chineses por trás dele indicam o local de propriedade do número. Agora eu quero escrever esses conteúdos nesses arquivos como 130 131 132 ... respectivamente.txt 131.txt 132.txt .......
public static void main (string args []) {arquivo file = null; BufferErader Br = null; StringBuffer buffer = null; String childPath = "src/endlist.txt"; String data = ""; tente {file = new File (ChildPath); buffer = new StringBuffer (); InputStreamReader isr = new InputStreamReader (new FileInputStream (FILE), "UTF-8"); Br = new BufferredReader (ISR); int s; while ((s = B.read ())! = -1) {buffer.append ((char) s); } dados = buffer.toString (); } catch (Exceção e) {e.printStackTrace (); } Mapa <string, ArrayList <String>> resultMap = new HashMap <String, ArrayList <String>> (); for (int i = 0; i <10; i ++) {resultmap.put ("13"+i, novo ArrayList <String> ()); } Padrão padrão = padrão.compile ("(// d {3}) (// d {4}, [/u4e00-/u9fa5]*// n)"); Matcher Matchaer = Pattern.Matcher (Data); while (matcher.find ()) {ResultMap.get (MatchaR.Group (1)). Add (MatchaR.Group (2)); } para (int i = 0; i <10; i ++) {if (resultMap.get ("13" + i) .size ()> 0) {try {file outfile = new File ("src/13" + i + ".txt"); FileOutputStream outputStream = new FileOutputStream (outfile); OutputStreamWriter Writer = New OtpitStreamWriter (outputStream, "UTF-8"); ArrayList <String> templist = resultmap.get ("13" + i); for (int j = 0; j <templist.size (); j ++) {writer.append (resultmap.get ("13"+i) .get (j)); } writer.close (); outputStream.Close (); } Catch (Exceção e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); }}}}A linha 24 usa a expressão regular "(// d {3}) (// d {4}, [/u4e00-/u9fa5]*// n)" O conteúdo em cada () é um grupo, o índice começa de 1 e 0 representa toda a expressão. Portanto, essa expressão é dividida em dois grupos. O primeiro grupo representa 3 números, e o segundo grupo representa 4 números mais vários caracteres chineses, além de um personagem de nova linha. A extração é mostrada nas linhas 26-28.
Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo seja de ajuda para o seu estudo ou trabalho. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar.