mam ten wymóg - dla ciągu znaków, takich jak przedstawione poniżejwymienić kilka grup chwytania metodą regularne z Java
8This8 is &reallly& a #test# of %repl%acing% %mul%tiple 9matched9 9pairs
chciałbym odizolować dopasowane granic słowa (gdzie pasujące pary wynosi 8 lub & lub%) i odpowiednio będzie powodować w następujący
This is really a test of repl%acing %mul%tiple matched 9pairs
Ta lista znaków, który jest wykorzystywany dla pary może się zmieniać np 8,9,%, # itd. I tylko słowa pasujące do początku i końca z każdym typem zostaną pozbawione tych znaków, z tym samym znakiem osadzonym w słowie pozostającym tam, gdzie jest.
Korzystanie Java mogę zrobić wzór jako \\b8([^\\s]*)8\\b
i wymianę jako $ 1, aby uchwycić i zastąpić wszystkie wystąpienia 8 ... 8, ale w jaki sposób to zrobić dla wszystkich rodzajów par?
mogę zapewnić wzór takich jak \\b8([^\\s]*)8\\b|\\b9([^\\s]*)9\\b
.. i tak dalej, które pasują do wszystkich rodzajów pasujących par * 8,9, ..), ale w jaki sposób mogę określić „zmienna” grupę wymiana -
na przykład jeśli mecz wynosi 9 ... 9, zamiennik powinien wynosić 2 $.
Mogę oczywiście przeprowadzić to przez wiele z nich, każdy zastępując określony typ pary, ale zastanawiam się, czy istnieje bardziej elegancki sposób.
Czy istnieje zupełnie inny sposób podejścia do tego problemu?
Dzięki.
Dzięki. Korzystanie z back odniesienia i przechwytywania grup do 2, zgodnie z sugestią Ciebie i innej osoby, zdaje się ją przybić. Używam następujących (? ssen
@Ssen dokładnie to masz. Znacznie bardziej zredukowany jeden (?