#regex #perl #character
#регулярное выражение #perl #символ
Вопрос:
У меня ситуация, когда мне нужно удалить последние n
числовые символы после /
символа.
Например:
/iwmout/sourcelayer/iwm_service/iwm_ear_layer/pomoeron.xml@@/main/lsr_int_vnl46a/61
После последнего /
мне нужно, чтобы число 61 было вычеркнуто из строки, чтобы вывод был,
/iwmout/sourcelayer/iwm_service/iwm_ear_layer/pomoeron.xml@@/main/lsr_int_vnl46a/
Я пытался использовать chop, но он удаляет только последний символ, т. Е. 1, в приведенном выше примере.
Последняя часть, то есть 61, приведенная выше, может быть любой, например 221, или 2, или 100 чего угодно. Мне нужно удалить последние числовые символы после /
. Возможно ли это в Perl?
Ответ №1:
Замена регулярного выражения для удаления последних цифр:
my $str = '/iwmout/sourcelayer/iwm_service/iwm_ear_layer/pomoeron.xml@@/main/lsr_int_vnl46a/61';
$str =~ s/d $//;
d
соответствует серии цифр и $
соответствует концу строки. Они заменяются пустой строкой.
Комментарии:
1. @Pradeesh, если этот ответ сработал для вас, пожалуйста, отметьте его «Правильным», установив флажок
Ответ №2:
Ответ @ Tim $str =~ s/d $//
верен; однако, если вы хотите удалить последние n-значные символы строки, но не обязательно все конечные цифровые символы, вы могли бы сделать что-то вроде этого:
my $s = "abc123456";
my $n = 3; # Just the last 3 chars.
$s =~ s/d{$n}$//; # $s == "abc123"
Комментарии:
1. Хотя это отвечает на заголовок вопроса, это не отвечает на то, что Прадиш на самом деле спросил 🙂
2. Большое вам спасибо за ответы. Моя проблема заключалась в том, что я не уверен, каково именно значение «n». Это продолжает меняться, когда я читаю строку за строкой из файла. Ответ Тима сделал свое дело :).
3. @Tim: да — вот почему я начал свой ответ с кивка вашему =)
Ответ №3:
// Code to remove last n number of strings from a string.
// Import common lang jar
import org.apache.commons.lang3.StringUtils;
public class Hello {
public static void main(String[] args) {
String str = "Hello World";
System.out.println(StringUtils.removeEnd(str, "ld"));
}
}