Търсене и замяна
Можете лесно да навигирате във вашия документ с помощта на клавиатура и мишка, но ако имате много страници, през които да преминете, ще отнеме доста време, за да намерите конкретен текст в дълъг документ. Ще отнеме повече време, когато искате да замените определени символи или думи, които сте използвали в документа си. Фиксирането и подмяната на функционалността ви позволява да намерите поредица от символи в документ и да го замените с друга поредица от символи.
Aspose.Words позволява да намерите конкретен низ или регулярен израз в документа си и да го замените с алтернатива, без да инсталирате и използвате допълнителни приложения като Microsoft Word. Това ще ускори много писане и форматиране задачи, потенциално спестявайки ви часове работа.
Тази статия обяснява как да се прилагат низ замяна и редовни изрази с подкрепата на мета символи.
Начини за намиране и замяна
Aspose.Words осигурява два начина за прилагане на операцията за намиране и замяна, като използва следното:
- Просто замяна на низ за да намерите и замените конкретен низ с друг, трябва да посочите низ за търсене (алфачислителни символи), който ще бъде заменен според всички събития с друг определен низ за замяна. И двата низа не трябва да съдържат символи. Като се има предвид, че сравнението на низовете може да бъде от гледна точка на случая, или може да не сте сигурни в правописа или да имате няколко подобни правописа.
- Регулярни изрази гответе регулярен израз, за да намерите точния низ мачове и да ги замените според редовния си израз. Имайте предвид, че думата се определя като съставена само от буквено-цифрови знаци. Ако заместването се изпълнява само с цели думи, които се сравняват и входният низ съдържа символи, тогава няма да бъдат намерени фрази.
В допълнение, можете да използвате специални метахарактери с прости низ замяна и редовни изрази, за да се определят прекъсвания в рамките на намирането и замяна на операция.
Aspose.Words представя функционалността за намиране и замяна с aspose.words.replacing модул. Можете да работите с много възможности по време на намирането и замяната на процеса с помощта на FindReplaceOptions Клас.
Търсене и замяна на текст с помощта на проста замяна на низове
Можете да използвате един от replace както и replace_regex методи за намиране или замяна на определен низ и връщане на броя на направени заместители. В този случай можете да посочите низ, който да бъде заменен, низ, който ще замени всички негови събития, дали замяната е чувствителна към случая и дали ще бъдат засегнати само самостоятелни думи.
Следният пример за код показва как да се намери стринга …CnustrName… и да го замените със стринга *.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.writeln("Hello _CustomerName_,")
print("Original document text: " + doc.range.text)
doc.range.replace("_CustomerName_", "James Bond", aw.replacing.FindReplaceOptions(aw.replacing.FindReplaceDirection.FORWARD))
print("Document text after replace: " + doc.range.text)
# Save the modified document
doc.save(docs_base.artifacts_dir + "FindAndReplace.simple_find_replace.docx")
Можете да забележите разликата между документа, преди да приложите проста замяна на низ:

И след прилагане на прост низ замяна:

Търсене и замяна на текст с помощта на редовни изрази
Редовният израз е модел, който описва определена поредица от текстове. Предполагам, че искате да замените всички двойни събития на една дума с една дума явление. След това можете да приложите следния регулярен израз, за да уточните модела с две думи: ([a-zA-Z]+) \1
.
Използвайте replace_regex метод за търсене и замяна на специфични комбинации от символи чрез задаване на регулярен параметър на израз като модел за намиране на съвпадения.
Следният пример за код показва как да замените низове, които съвпадат с регулярен израз с определен заместващ низ:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
builder = aw.DocumentBuilder(doc) | |
builder.writeln("sad mad bad") | |
options = aw.replacing.FindReplaceOptions() | |
doc.range.replace_regex("[s|m]ad", "bad", options) | |
doc.save(docs_base.artifacts_dir + "FindAndReplace.replace_with_regex.docx") |
Можете да забележите разликата между документа преди прилагане на низ замяна с редовни изрази:

И след прилагане на низ замяна с редовни изрази:

Намерете и сменете низ с помощта на мета символи
Можете да използвате мета символи в низа за търсене или в низа за замяна, ако даден текст или фраза се състои от няколко параграфи, раздели или страници. Някои от мета символите включват &p за прекъсване на параграфа, &b за прекъсване на раздел, &m за прекъсване на страницата, и &l за прекъсване на линията.
Следният пример за код показва как да замените текст с параграф и страница с прекъсване:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
builder = aw.DocumentBuilder(doc) | |
builder.font.name = "Arial" | |
builder.writeln("First section") | |
builder.writeln(" 1st paragraph") | |
builder.writeln(" 2nd paragraph") | |
builder.writeln("insert-section") | |
builder.writeln("Second section") | |
builder.writeln(" 1st paragraph") | |
findReplaceOptions = aw.replacing.FindReplaceOptions() | |
findReplaceOptions.apply_paragraph_format.alignment = aw.ParagraphAlignment.CENTER | |
# Double each paragraph break after word "section", add kind of underline and make it centered. | |
count = doc.range.replace("section&p", "section&p----------------------&p", findReplaceOptions) | |
# Insert section break instead of custom text tag. | |
count = doc.range.replace("insert-section", "&b", findReplaceOptions) | |
doc.save(docs_base.artifacts_dir + "FindAndReplace.replace_text_containing_meta_characters.docx") |
Намерете и заменете низ в заглавната част/футър на документ
Можете да намерите и замените текста в раздела заглавна / крак на Word документ с помощта на HeaderFooter Клас.
Следният пример за код показва как да замените текста на заглавието в документа си:
Можете да забележите разликата между документа, преди да приложите замяна на низ:

И след прилагане на заглавната низ замяна:

Примерът с кода за замяна на текста на раздел footer във вашия документ е много подобен на предишния заглавен код пример. Всичко, което трябва да направите, е да замените следните два реда:
header = headersFooters.get_by_header_footer_type(aw.HeaderFooterType.HEADER_PRIMARY)
header.range.replace("Aspose.Words", "Remove", options)
Със следното:
header = headersFooters.get_by_header_footer_type(aw.HeaderFooterType.FOOTER_PRIMARY)
header.range.replace("Aspose.Words", "Remove", options)
Можете да забележите разликата между документа, преди да приложите замяна на низ:

И след като нанесете замяна на низ:

Игнориране на текст по време на намиране и замяна
Докато прилагате намерете и замените операцията, можете да игнорирате някои сегменти от текста. Така че някои части от текста могат да бъдат изключени от търсенето, а намирането и замяната могат да се прилагат само към останалите части.
Aspose.Words осигурява много намери и замени свойства за игнориране на текст като ignore_deleted, ignore_fields, както и ignore_inserted.
Следният пример за код показва как да игнорирате текст вътре изтрийте ревизиите:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
builder = aw.DocumentBuilder(doc) | |
# Insert non-revised text. | |
builder.writeln("Deleted") | |
builder.write("Text") | |
# Remove first paragraph with tracking revisions. | |
doc.start_track_revisions("author", DateTime.now) | |
doc.first_section.body.first_paragraph.remove() | |
doc.stop_track_revisions() | |
options = aw.replacing.FindReplaceOptions() | |
options.ignore_deleted = True | |
doc.range.replace_regex("e", "*", options) | |
print(doc.get_text()) | |
options.ignore_deleted = False | |
doc.range.replace(regex, "*", options) | |
print(doc.get_text()) |
Персонализиране Търсене и замяна на операция
Aspose.Words предоставя много различни свойства за намиране и замяна на текст, като прилагане на специфичен формат с apply_font както и apply_paragraph_formats свойства, като се използват заместители в резервни модели с use_substitutions собственост и други.
Следният пример за код показва как да се подчертае конкретна дума във вашия документ:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document(docs_base.my_dir + "Find and highlight.docx") | |
options = aw.replacing.FindReplaceOptions() | |
options.direction = aw.replacing.FindReplaceDirection.BACKWARD | |
options.apply_font.highlight_color = drawing.Color.yellow | |
text = "your document" | |
doc.range.replace(text, text, options) | |
doc.save(docs_base.artifacts_dir + "FindAndReplace.find_and_highlight.docx") |