Я просмотрел все вопросы здесь, но не смог найти ответ на свой. Я хочу удалить весь текст, который следует за определенной текстовой частью. Не внутри строки, а на самом деле весь следующий текст!
Вот пример списка (это на самом деле простой пример. Обычно список значительно длиннее, но это не должно иметь никакого отношения квопрос или ответ):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>WFWorkflowActions</key>
<array>
<dict>
<key>WFWorkflowActionIdentifier</key>
<string>is.workflow.actions.comment</string>
<key>WFWorkflowActionParameters</key>
<dict>
<key>WFCommentActionText</key>
<string>Comment</string>
</dict>
</dict>
</array>
<key>WFWorkflowClientRelease</key>
<string>3.0</string>
<key>WFWorkflowClientVersion</key>
<string>1030.14</string>
<key>WFWorkflowIcon</key>
<dict>
<key>WFWorkflowIconGlyphNumber</key>
<integer>59771</integer>
<key>WFWorkflowIconStartColor</key>
<integer>463140863</integer>
</dict>
<key>WFWorkflowImportQuestions</key>
<array/>
<key>WFWorkflowInputContentItemClasses</key>
<array>
<string>WFAppStoreAppContentItem</string>
<string>WFArticleContentItem</string>
<string>WFContactContentItem</string>
<string>WFDateContentItem</string>
<string>WFEmailAddressContentItem</string>
<string>WFGenericFileContentItem</string>
<string>WFImageContentItem</string>
<string>WFiTunesProductContentItem</string>
<string>WFLocationContentItem</string>
<string>WFDCMapsLinkContentItem</string>
<string>WFAVAssetContentItem</string>
<string>WFPDFContentItem</string>
<string>WFPhoneNumberContentItem</string>
<string>WFRichTextContentItem</string>
<string>WFSafariWebPageContentItem</string>
<string>WFStringContentItem</string>
<string>WFURLContentItem</string>
</array>
<key>WFWorkflowMinimumClientVersion</key>
<integer>900</integer>
<key>WFWorkflowMinimumClientVersionString</key>
<string>900</string>
<key>WFWorkflowTypes</key>
<array>
<string>NCWidget</string>
<string>WatchKit</string>
</array>
</dict>
</plist>
Я хочу удалить все, включая и после:
</array>
<key>WFWorkflowClientRelease</key>
Все разрывы строк / новые строки должны быть сохранены.
Результат будет выглядеть следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>WFWorkflowActions</key>
<array>
<dict>
<key>WFWorkflowActionIdentifier</key>
<string>is.workflow.actions.comment</string>
<key>WFWorkflowActionParameters</key>
<dict>
<key>WFCommentActionText</key>
<string>Comment</string>
</dict>
</dict>
Я даже нашел способ найти решение, но для этого мне пришлось удалить все новые строки, что нежелательно. Я впервые использовал \n
. Затем я заменил </array><key>WFWorkflowClientRelease</key>
на lrtxplqw
, а затем удалил все после, включая lrtxplqw
на lrtxplqw.*$
. Таким неловким способом мне удалось удалить все, включая и после lrtxplqw
. Но решение не является удовлетворительным, потому что разрывы строк / все новые строки должны быть сохранены.
Я также был бы рад удалить первую часть, которая будет:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>WFWorkflowActions</key>
<array>
Окончательный результат выглядел бы так:
<dict>
<key>WFWorkflowActionIdentifier</key>
<string>is.workflow.actions.comment</string>
<key>WFWorkflowActionParameters</key>
<dict>
<key>WFCommentActionText</key>
<string>Comment</string>
</dict>
</dict>
Я надеюсь, что выразил себя ясно и понятно, и я был бы очень рад, если бы кто-то мог мне помочь.