Какую ОС, среду или язык программирования вы используете?
Steven
Windows, среда не уверен, что вы имеете в виду, но на данный момент его в интеграции и языке Java Java будет хорошо ... вроде как этот у меня есть "^. +? \ SPM _. + $", но он, очевидно, служит другой цель
user3738022
1
Какой вклад? Какой выход? Это файл? Это используется в контексте программирования с Java? Пакетный скриптинг?
Samir
input представляет собой запрос xpath, который выдает этот вывод, он используется в контексте программирования с java yes. Таким образом, печать, запись в файл не будет подходящим. Единственное, что было бы приемлемо - это регулярное выражение. Я получил это «^. + \ - old. + $», Но он делает противоположное, вместо удаления, сохраняя все с -old
user3738022
Ответы:
3
Я думаю, что вы неправильно понимаете регулярные выражения. По сути, они отвечают на вопрос "выглядит ли этот текст как этот конкретный шаблон?" Есть много инструментов, которые используют регулярные выражения для управления текстом, например, sed или же grepи я думаю, что вы путаете их.
Что вам нужно сделать, это сформировать регулярное выражение, соответствующее тексту, который вы хотите отфильтровать. Например, искомое выражение ^.*-old\|$и отфильтруйте строки, используя что-то вроде этого.
foreach line in input_file
if regex.matches(line, "^.*-old\|$") then
continue
else
print line
Хорошо, я новичок во всем этом, поэтому я перепутал свои термины, я попробовал выражение само по себе, и он ничего не делает, не удаляя строки с -old. я
user3738022
Я пробовал это регулярное выражение "^. + \ - old. + $", Но вместо удаления этих строк он сохраняет их
user3738022
Во-вторых, выражения regex используются для «ответа на вопрос», или, вернее, для описания шаблона. Они, очевидно, не могут быть теми, кто задает вопрос! ;-) Во всяком случае, переводчик задает вопрос «что вы хотите, чтобы я искал?».
Samir
Итак, что я могу использовать, чтобы отфильтровать это и получить желаемый результат удаления всех строк, содержащих -old
user3738022
@ user3738022 Псевдокод, предоставленный Nat, распечатает все строки, которые не соответствовать регулярному выражению Если вы хотите иметь возможность вернуть его другой функции в Java, вы можете создать StringBuilder и добавить line к этому в else пункт вместо печати.
Спасибо, но, как вы сказали, сложная часть - найти версию для grrp или egrep для Windows. Я не хочу использовать cmd и powershell. Могу ли я не просто изменить эту команду, чтобы она удаляла строки со старыми вместо того, чтобы выбирать только те: ^. +? \ - old. + $
Ответы:
Я думаю, что вы неправильно понимаете регулярные выражения. По сути, они отвечают на вопрос "выглядит ли этот текст как этот конкретный шаблон?" Есть много инструментов, которые используют регулярные выражения для управления текстом, например,
sed
или жеgrep
и я думаю, что вы путаете их.Что вам нужно сделать, это сформировать регулярное выражение, соответствующее тексту, который вы хотите отфильтровать. Например, искомое выражение
^.*-old\|$
и отфильтруйте строки, используя что-то вроде этого.источник
line
к этому вelse
пункт вместо печати.Что вам нужно
или что должно работать так же:
Теперь самое сложное - найти версию Windows
grep
или жеegrep
который запускается из cmd.exe или Powershell.источник
negative lokahead
может работать, в зависимости от вашего движка регулярных выражений.