Chcę skonstruować wyrażenie regularne, które pasuje albo '
lub "
, a następnie dopasowuje inne znaki, kończące się dopasowaniem, odpowiednio, '
lub "
, w zależności od tego, co napotkano na samym początku początek. Problem ten wydaje się więc na tyle prosty, że można go rozwiązać przy pomocy odwołania zwrotnego na końcu; Oto niektóre kodu regex poniżej (to w Javie więc przeszkadza dodatkowe znaki ewakuacyjne, takie jak \
przed "
):Regex; backreferencing znak, który NIE był dopasowany w zestawie znaków
private static String seekerTwo = "(['\"])([a-zA-Z])([a-zA-Z0-9():;/`\\=\\.\\,\\- ]+)(\\1)";
Ten kod skutecznie radzić sobie z rzeczy, takich jak:
"hello my name is bob"
'i live in bethnal green'
The Problem pojawia się, gdy mam ciąg jak poniżej:
"hello this seat 'may be taken' already"
Stosując powyższe regex na nie powiedzie się w początkowej części po napotkaniu '
to będzie kontynuować i pomyślnie dopasować 'may be taken'
... ale jest to oczywiście niewystarczające, potrzebuję dopasować cały ciąg.
Myślę, że potrzebuję sposobu, aby zignorować typ cudzysłowu, który nie był dopasowany w pierwszej grupie, włączając go jako znak w zestawie znaków trzeciej grupy. Jednak nie wiem, jak to zrobić. Czy istnieje jakaś podstępna funkcja NOT backreference czy coś takiego? Coś, czego mogę użyć, aby odnieść się do postaci z 1. grupy, która NIE była dopasowana? Lub w inny sposób jakieś rozwiązanie mojego kłopotliwego położenia?
Witam i witam w StackOverflow. Pozwoliłem trochę sformatować twoją pocztę. Możesz kliknąć link edycji, aby zobaczyć, jak to zrobiłem. Bardzo ważne jest, aby wiedzieć, czy musisz opublikować kod ... –