Este artigo descreve as funções e o uso de visualização surround regular e referências em Java. Compartilhe -o para sua referência, como segue:
Ao redor da vista
1. Em torno do conceito
Olhando em volta, também conhecido como afirmação de largura zero, afirmação abreviada.
A vista surround enfatiza a posição (frontal ou traseira) e a expressão da vista surround deve ser correspondida para ter sucesso.
A visualização surround pode ser considerada como uma condição de julgamento adicional para adição virtual à sua localização e não consome caracteres de correspondência regulares.
2. Olhando em volta da expressão básica
(? = Expressão) A ordem é positiva e a expressão pode ser correspondida no lado direito da localização.
(?! Expressão) A negação da sequência da visualização circundante significa que o lado direito do local não pode corresponder à expressão
(? <= Expressão) A ordem reversa olha positivamente, indicando que o lado esquerdo da posição pode corresponder à expressão
(? <! Expressão) A ordem reversa nega a vista circundante, indicando que o lado esquerdo da posição não pode corresponder à expressão
Nota: O lado direito da ordem (=) corresponde, e a vista surround da ordem reversa tem mais <do que a vista surround seqüencial.
O JavaScript suporta apenas a visualização surround seqüencial, mas não suporta a visualização surround reversa.
Embora a vista surround seqüencial e a vista surround reversa sejam suportadas em Java, a vista surround da ordem reversa suporta apenas expressões com uma determinação de comprimento. Na vista surround da ordem reversa, os quantificadores apenas apóiam? e não apoie outros quantificadores com um comprimento incerto.
3. Use exemplos
3.1. Afirmação da sequência e olhe em volta (? = Expressão)
3.1.1. Combine o nome do arquivo sem sufixo com o final do sufixo ".txt"
【.+(? =/. TXT)】
texto:
txtfile.txt
exfile.exe
inifile.ini
Resultado da correspondência: txtfile
3.1.2. Combine a senha (deve conter letras (insensível ao caso), números, 6 a 16 dígitos)
【^(? =.*? [A-ZA-Z]) (? =.*?
(? =.*? [A-ZA-Z]) Define pelo menos uma letra nos seguintes caracteres, usa (? =.*? [0-9]) para definir pelo menos um número nos caracteres a seguir e, finalmente, define o quantificador, correspondendo ao regular [a-ZA-Z0-9] {6,16}.
3.2. Negação de sequência da vista surround (?! Expressão)
3.2.1. Combine tags diferentes de <a> </a>
【<(?!/? A/b) [^<]+?>】
Texto: <a> <a1> </a> zxiaofan <div> com </d> iv> cc
Resultado da correspondência:
<a1>
<div>
</d>
3.2.2. Combine o nome do arquivo com o sufixo que não é ".txt" no final do sufixo
【.+ (?!/. Txt)】 Erros de expressão porque.+ Não tem posição especificada e é uma correspondência gananciosa. (So.+ pode corresponder diretamente ao txtfile.txt)
【(.+) (?!/. Txt)/. [^.]+$】
texto:
txtfile.txt
exfile.exe
inifile.ini
Resultado da correspondência:
exfile.exe
inifile.ini
3.3. Afirmação da ordem reversa em torno (? <= Expressão)
3.3.1. Combine o conteúdo entre as tags especificadas
【(? <= <div>) [^<]+(? = </div>)】
Texto: <div> zxiaofan.com </div>
Resultado correspondente: zxiaofan.com
3.3.2. Obtenha o valor do parâmetro especificado
【(? <= Nome =).+】
texto:
nome = zxiaofan
idade = 20
nível = 6
Resultado da correspondência: Zxiaofan
3.4. Negação de ordem reversa da vista surround (? <! Expressão)
3.4.1. Obtenha o valor dos parâmetros não especificados
【^[^=#]+= (? <! Nome =).+$】
texto:
nome = zxiaofan
idade = 20
nível = 6
#sexo = 1
Resultado da correspondência:
idade = 20
nível = 6
4. Exemplos abrangentes
4.1. Deve conter letras, números e caracteres especiais
【^(? =.*? [A-ZA-Z]) (? =.*?/D) (?!
Explicação: ^(? =.*? [A-ZA-Z]) O limite deve ter letras; (? =.*?/d) O limite deve ter números; (?! [A-ZA-Z/D]+$) O limite não pode ser todos os números e letras.
4.2. Combine o nome de domínio principal (corresponda ao nome de domínio de nível superior)
【(?
texto:
vip.zxiaofan.com.cn
http://zxiaofan.com/123
www.zxiaofan.org.cn
Resultado da correspondência:
zxiaofan.com.cn
zxiaofan.com
zxiaofan.org.cn
Nota: [?:] Não captura o texto correspondente a grupos nomeados automaticamente, nem atribuem grupos a esse grupo. (Não afetará o resultado após a remoção)
Nome de domínio especial: Wanwang www.net.cn
4.3. Combine 5 números de telefone celular consecutivos
【1 [34578]/d {3} (/d) (?!/1 {1}) (/d)/2 {4}】
texto:
18328501111
183285111111
18328551111
183281111111
Resultado da correspondência:
183285111111
Nota1:/1 corresponde ao primeiro conjunto de conteúdo
Nota2: (?!/1 {1}) Filtro 6 números consecutivos
Referências de fundo
1. Conceito de referência
Capture Group: Divida em vários grupos de acordo com a subexpressão (); Cada par de () aparece é um grupo de captura; O motor numerará o grupo de captura e a regra de numeração é o suporte esquerdo (a ordem de ocorrência da esquerda para a direita, a partir de 1.
Capture Group Naming:
(? <name> exp) Combine o Exp e capture o texto em um grupo nomeado, que também pode ser escrito como (? 'Name'exp);
(?: Exp) Combine exp, não captura o texto correspondente ao grupo nomeado automaticamente, nem atribui um número de grupo a esse grupo.
Referência de back:
/1 significa o primeiro grupo (ABC); /2 significa o segundo grupo;
/k <word>: refere -se ao grupo com o nome especificado.
2. Use exemplos
2.1. Combine o nome do arquivo com o mesmo começo e fim
【([AZ] {3}) [AZ]+/./1 {1}】
texto:
txtfile.txt
exfile.txt
fileini.ini
Resultado da correspondência:
txtfile.txt
Nota: ([AZ] {3}) é o primeiro grupo e /1 {1} significa referir -se ao primeiro grupo uma vez (ele não pode ser escrito como /1 {3} aqui).
PS: Aqui estão duas ferramentas de expressão regular muito convenientes para sua referência:
Ferramenta de teste on -line de expressão regular JavaScript:
http://tools.vevb.com/regex/javascript
Ferramenta de geração online de expressão regular:
http://tools.vevb.com/regex/create_reg
Para obter mais informações sobre os algoritmos Java, os leitores interessados neste site podem visualizar os tópicos: "Java regulares habilidades de expressão", "Estrutura de dados Java e tutorial de algoritmo", "Java Operação Dom Node Skills", "Java File and Directory Operation Skills Resumo" e "Java cache Operação Sabina" Resumo "
Espero que este artigo seja útil para a programação Java de todos.