С .*&
Вы соглашаетесь с текстом до и после этого последние&
в вашем тексте. Если вы не хотите включать в себя, что в матче, поставить его в positive lookahead assertion:
.*(?=&)
Для поиска более одного сепаратора, использовать alternation и character class:
.*(?=[&,;\\/|-]|\(JT\))
Обратите внимание, что это изменит что-то вроде
First, Middle & Last
в
First, Middle
, потому что матч останавливается перед последним разделителем. Если вы хотите, чтобы остановить на первого сепаратора, использовать ленивым quantifier:
.*?(?=[&,;\\/|-]|\(JT\))
Обратите внимание, что вам нужно, чтобы избежать обратной косой черты для струнного процессора, так что регулярное выражение, написанное в виде строки, будет выглядеть например
".*?(?=[&,;\\\\/|-]|\\(JT\\))"
Это немного расплывчато - не могли бы вы разместить больше примеров входных строк и желаемого результата? Например, если регулярное выражение удалит все после того, как будет найден первый разделитель? В строке или для всей строки? Должно ли оно относиться ко всем сепараторам одинаково? –
Пример: FirstName & LastName Ожидаемый результат = FirstName – uttara
Как насчет всех других разделителей? Каким сепаратором является '(JT)'? Измените свой пост и добавьте несколько примеров. Используйте Ctrl-K, чтобы отложить их 4 пробела, чтобы они были отформатированы как «сырой текст». –