Giới thiệu và ứng dụng Wildcard trong Word

Bạn có thể đã quen thuộc với hai ký tự đại diện “*” và “?” từ việc tìm kiếm file trong máy tính: Hiển thị tất cả file có đuôi .doc bằng cách gõ “*.doc” hoặc tất cả file “abc.doc”, “adc.doc”, “aac.doc” bằng cách gõ “a?c.doc”. Hay trong Excel, Wildcards là trợ thủ đắc lực giúp bạn trong nhiều thao tác, chẳng hạn như việc tìm kiếm dữ liệu. Nhưng Wildcard trong Word còn phức tạp và mạnh mẽ hơn nhiều.

Hãy nói về ứng dụng Wildcard trong Word – tìm kiếm và thay thế sử dụng kí tự đại diện. Để làm điều này, hãy chắc chắn rằng trong hộp thoại Find/Replace, bạn tích vào ô Use Wildcards. Hoặc trong macro, đặt giá trị .Find.MatchWildcards = True. Nếu bạn không làm vậy, Word sẽ chỉ hiểu wildcard như những kí tự thông thường.

Chọn “More” -> “Use Wildcards”

Bạn sẽ có thể xác định vùng với ngoặc vuông [], nhóm với ngoặc tròn (), lặp bằng @, cố định với <>, loại trừ sử dụng !. Với những biểu thức chính quy (regular expression) này bạn có thể tìm kiếm dựa vào những đoạn mẫu (pattern) cho văn bản của bạn. Một số mẫu: chỉ chứa kí tự nhất định, hoặc chứa số lượng kí tự nhất định.

Note: Word sử dụng tìm kiếm mẫu theo kiểu “lười biếng” (lazy pattern matching), có nghĩa là một khi tìm ra kết quả, việc tìm kiếm sẽ được dừng lại. Đối với hầu hết công cụ tìm kiếm của Unix, thuật toán sẽ cố gắng tìm và khớp càng nhiều càng tốt (“greedy” pattern matching), bởi vậy hãy cẩn thận khi sử dụng những công cụ này.

Bí mật của việc sử dụng wilcard là dùng những “pattern” để định nghĩa chuỗi bạn muốn tìm kiếm mà không đụng chạm đến những thứ khác xung quanh. Wildcard được sử dụng để thay thế kí tự hoặc chuỗi kí tự trong chính xâu đó.

Bởi một tập hợp kí tự có thể được biểu diễn bởi nhiều tập hợp wildcard khác nhau nên thường sẽ có nhiều hơn một cách xác định xâu kí tự trong văn bản. Tùy vào sở thích thói quan mà bạn có thể chọn thay thế chuỗi kí tự bằng cách này hay cách khác, và dựa vào ngữ cảnh mà ta tìm được cách ổn nhất.

Phần dưới đây là danh sách wildcard:

( [ ] { } < > ( ) – @ ? ! * \ )

Note 2: wildcard phân biệt chữ hoa/thường

Trong mục trợ giúp của Word sẽ khó mà tìm được một bài hướng dẫn về wildcard. Tuy nhiên nếu bạn thích tìm trong đó, hãy tìm topic có tiêu đề: “Type wildcards for items you want to find”. Nhưng để tìm được topic này, trước tiên bạn phải tìm topic khác có tên là “Fine-tune a search by using wildcard characters” rồi tìm đường dẫn trong đó.

Tip: Khi xài wildcard, đừng mím môi nhăn mặt, hãy cứ giữ biểu đạt thông thường thôi (keep up a regular expression)

Lý thuyết Wildcard trong Word

1. ? và *

Hai kí tự cơ bản nhất đó là dấu ? và dấu *. Cách dùng hai kí tự này khá giống nhau:

? sử dụng khi bạn muốn thay thế một kí tự.

* sử dụng khi bạn muốn thay thế nhiều kí tự.

s?t sẽ có thể tìm ra những từ như “sit”, “sat”, “set”… miễn là có 3 chữ, bắt đầu bởi s và kết thúc bởi t. Đồng thời nó cũng tìm kiếm sự kết hợp trong cùng một từ – khi đó phần tìm kiếm sẽ được đánh dấu. VD: s?t có thể trả về kết quả là cụm “set” nằm trong “inset”.

Trong khi đó, s*t sẽ trả về toàn bộ những từ như trên cộng với những từ hoặc cụm từ như “secret”, “secret” trong “secretary”, “serpent” hay thậm chí là “sign over document”.

Không giống như “?” luôn tìm kiếm kí tự bị thiếu, “*” sẽ tìm tất cả những gì ở giữa, kể cả không có kí tự nào cả. VD như s*t có thể sẽ trả về “st” hoặc “st” trong “streak”. Không có giới hạn cho sống lượng mà “*” sẽ tìm được. Bởi vậy hãy sử dụng nó một cách khôn ngoan hoặc là bạn sẽ kết thúc việc tìm kiếm với hàng ngàn megabyte tài liệu.

2.”@”

“@” được sử dụng để tìm kiếm một hoặc nhiều lần xuất hiện lặp lại của kí tự trước nó. Ví dụ: “lo@t” sẽ trả về “lot”, “lot” trong “lotus”, “loot”, “looot”… nhưng không trả về “loat”.

3. “<>”

Sử dụng cặp dấu lớn hơn/nhỏ hơn với bất kỳ kí tự nào bên trên để đánh dấu điểm đầu hoặc cuối của từ. Chẳng hạn khi sử dụng với “*”<s*t> sẽ tìm những cụm từ như “secret”, “serpent”, “sign over document” nhưng không trả về “secret” trong “secretary”, “set” trong “toolset”.

Nó vẫn sẽ trả về “set” trong “tea-set”.

Cặp <> sẽ tìm kiếm mọi cụm từ bắt đầu từ chữ đầu tiên cho tới từ cuối cùng có kết thúc bằng chữ cuối cùng. Như là <s*t> sẽ tìm bất cứ cụm từ nào bắt đầu bằng s và kết thúc với t.

Cặp <> có thể sử dụng cùng nhau hoặc riêng lẻ. Chẳng hạn, “fu@l>” sẽ tìm “fuuuul”, “ful” trong “wilful”, nhưng sẽ không trả “ful” trong “fully” hoặc “wilfully”.

4. []

Dấu ngoặc vuông luôn sử dụng theo cặp để xác định cụ thể chi tiết kí tự hoặc vùng kí tự. Ví dụ:

[abc] sẽ tìm tất cả kí tự a, b và c trong từ. [S] sẽ tìm kí tự “S” được viết hoa. Khi nhập [abc] trong từ “Secretary”, “c”và “a” sẽ được tìm kiếm.

[A-Z] sẽ tìm tất cả chữ cái được viết hoa. [0-9] sẽ tìm tất cả các số. [13579] tìm tất cả số lẻ và tương tự với số chẵn. [0-9A-z] sẽ tìm mọi chữ hoặc số.

Bạn có thể sử dụng kí tự hoặc chuỗi kí tự trong vùng [] bao gồm cả dấu cách. Các ký tự sẽ được xử lý theo thứ tự chữ và số theo thứ tự ưu tiên từ nhỏ tới lớn. Nếu bạn không chắc chắn ký tự nào nhỏ hơn, hãy mở hộp thoại Insert, phần Symbol.

VD: [Z-A] sẽ không thể tìm kiếm được.

5. \

Nếu bạn muốn tìm kiếm một kí tự đặc biệt (chẳng hạn như “?”, “*”) hãy đặt dấu gạch ngược trước nó:

[\?] sẽ tìm kiếm “?” thay vì “\a” hay “\b”.

Nếu bạn muốn tìm kiếm chính dấu này, hãy ghi nó 2 lần: [\\]Thỉnh thoảng cái này không hoạt động.

Như đã nói ở trên, đây là list những kí tự được sử dụng như wildcard: ( [ ] { } < > ( ) – @ ? ! * \ )

6. [!]

[!] khá giống với [] ngoại trừ việc trong trường hợp này nó sẽ tìm kiếm những chuỗi không được liệt kê. Ví dụ: [!o]sẽ tìm kiếm mọi kí tự ngoại trừ “o”. Bạn có thể sử dụng tương tự như làm với vùng [], như là [!A-Z] – tìm kiếm mọi thứ ngoại trừ chữ hoa.

7. {}

Dấu ngoặc nhọn được sử dụng để đếm sự xuất hiện của kí tự trước nó.

{n} sẽ tìm chính xác số lượng n chữ cái lặp lại của kí tự trước nó. Chẳng hạn, a{2} sẽ tìm kiếm “aa”.

{n,} tìm kiếm ít nhất n chữ cái lặp lại của kí tự. a{2,} sẽ tìm “aa”, “aaa”, “aaaa”…

Note: Việc đếm có thể sử dụng với chuỗi kí tự. Khi kết hợp như vậy, tác dụng của nó sẽ tăng lên đáng kể. Ví dụ như [deno]{4}, ngoài tìm kiếm “denn”, “oooo”, “nnnn” thì còn tìm kiếm cả “done”, “node”, “eden”. Hay là (ts, ){3} sẽ trả về “ts, ts, ts, “

8. ()

Dấu ngoặc tròn không có tác dụng tìm kiếm theo pattern, nhưng sẽ chia các pattern theo trình tự logic khi bạn muốn sắp xếp lại trong chức năng replace. Nó phải sử dụng theo cặp và sẽ được đánh dấu bởi số.

VD: Nhập (John) (Smith) tại find và nhập \2 \1 tại replace. Kết quả sẽ là Smith John (lưu ý nhập dấu cách).

Hoặc \2 sẽ trả về kết quả Smith.

Đồng thời thì placeholder như \1 \2 có thể sử dụng để tìm kiếm chuỗi: (Fred) \1 sẽ tìm kiếm Fred Fred.

Dấu ngoặc tròn vô cùng hữu dụng khi sử dụng cùng wildcard trong những tình huống phức tạp cũng như khi dùng với replace.

9. ^

Dấu mũ “^” không phải là đặc trưng cho tìm kiếm ký tự đại diện nhưng đôi khi nó được sử dụng hơi khác so với bình thường.

Tại hộp thoại Find & Replace, nếu bạn click vào “Find what” và “Replace with” sau đó click vào “Special”, một danh sách những kí tự đặc biệt sẽ hiện ra. Chọn một kí tự trong đó và sẽ có một code được chèn vào . chẳng hạn như “Tab Character” sẽ được đại diện bằng “^t” hoặc Column Break là “^n”.

Một khi bạn biết code, bạn có thể nhập thẳng. Và đó là tác dụng của dấu mũ.

Nút Special

Tuy nhiên, những option từ nút “Special” khi tìm kiếm bằng wildcard khá là hạn chế so với tìm kiếm thông thường. Dưới đây là một số ví dụ đáng chú ý và cách giải quyết:

-Bạn muốn xác định đánh dấu trang (paragraph mark – ¶). Tìm kiếm bình thường sẽ là ^p, tuy nhiên ^p không hoạt động khi tìm kiếm bằng wildcard. Để áp dụng trong replace, bạn thay bằng ^13. Nhưng đồng thời những kí tự sai trông-giống-paragraph mark-nhưng-không-phải, cũng sẽ được chèn vào. Nên là hãy cẩn thận.

-Wildcard cũng sẽ không tìm được footnote/endnote mark. Hãy thay thế bằng ^2.

-Trong tìm kiếm thông thường bạn có thể sử dụng ^u đi kèm với code của kí tự để tìm kiếm theo code (chẳng hạn như ^u97 sẽ tìm những chữ “a”). Tuy nhiên tìm kiếm này sẽ không hoạt động khi tìm kiếm với wildcard. Vậy nên để giải quyết thì hãy copy paste thẳng vào, hoặc dùng trick Alt + code để nhập (Word 97 không xài được trick này).

-Dường như không có cách nào để tìm kiếm các trường (field) bằng wildcard. Ngay cả ^19 (field code character code) cũng không hoạt động – có vẻ như đây là 1 bug.

Ngoài những trường hợp kể trên, đối với hầu hết kí tự đặc biệt hay các object, bạn có thể sử dụng cùng một code với tìm kiếm thông thường (^g= graphic – đồ họa, ^^= tìm kiếm dấu mũ).

Trong nhiều trường hợp, người ta có thể gán kí tự với số. Ví dụ hiển nhiên là ^13 cho “¶”. Thật không may là không thể dự đoán được độ chính xác khi thực hiện điều này. Nếu bạn có nhu cầu tìm kiếm bằng cách sử dụng số ký tự, hãy thử với một số trường hợp trước.

Thực hành

Bài 1: Đảo họ và tên

John Smith, Brian Jones và Alan Williams

Để đảo từng người, nhập thẳng tên vào mục find, nhập \2 \1 vào Replace: (John) (Smith) -> \2 \1.

Để đảo đồng loạt, tại mục Find nhập: (<*>) (<*>). Tại replace: \2 \1

Nếu làm sai, ấn Undo (phím tắt Ctrl + Z) nhé!

Trong trường hợp tên viết tắt hoặc tên đệm?

John F. Kennedy

Lai T. Minh

John Smith

Find: (<*) ([! ]@)^13

Replace: \2, \1^p

Kết quả:

Kennedy, John F.

Minh, Lai T.

Smith, John

Bài 2: Đảo ngày tháng năm

7th August 2001

Find: ([0-9]{1,2}[dhnrst]{2}) (<[AFJMNSOD]*>) ([0-9]{4})

Replace: \2 \1, \3

Kết quả: August 7, 2001

Bài 3: Thêm hoặc xóa dấu chấm cuối câu

Người Mỹ thường xài dấu chấm sau Mr., Mrs., Dr. trong khi người Anh thường bỏ quên điều đó.

Find: ([DM][rs]{1,2})( ) sẽ tìm những Mr Mrs Ms Dr thiếu dấu chấm.

Replace: \1.\2 sẽ thêm vào

Ngược lại:

Find: ([DM][rs]{1,2}).

Replace: \1

-> Xóa bớt dấu chấm

Bài 4: Đoạn văn bản trùng

Find: (*^13)\1\1 sẽ tìm kiếm 3 đoạn văn bản trùng nhau.

Replace: \1 sẽ xóa bớt 2 đoạn đi.

Bài 5: Các thẻ

Find: \<([!\<\>]@\>)*\</\1 sẽ tìm kiếm các thẻ thuộc tính XML như <p>some text</p>

Hoặc là

<customer-name>John Smith</customer-name>

Rồi, giờ xóa nó đi bằng cách để trống replace.

 

Nguồn bài viết: https://wordmvp.com/FAQs/General/UsingWildcards.htm