Hướng dẫn regex find all uppercase words python - regex tìm tất cả các từ viết hoa python

Hướng dẫn regex find all uppercase words python - regex tìm tất cả các từ viết hoa python

Trong bài viết này, chúng tôi chỉ ra cách chỉ trích xuất các ký tự chữ hoa từ một chuỗi trong Python bằng cách sử dụng các biểu thức thông thường.

Vì vậy, giả sử, chúng tôi có chuỗi, "Có! Nó đã hoạt động"

Và chúng tôi chỉ muốn trích xuất các ký tự chữ hoa. Chúng ta có thể làm điều này trong Python với một biểu thức chính quy cơ bản.

Chúng tôi chỉ cần viết một biểu thức thông thường chỉ cho phép các ký tự chữ cái viết hoa được trả về. Bất kỳ ký tự khác sẽ không được trả lại.

Câu lệnh biểu thức chính quy chỉ trả về các ký tự chữ hoa được hiển thị bên dưới.

Biểu thức chính quy này ở trên sẽ chỉ có các ký tự chữ hoa được trả về. Nó sẽ không trả về các ký tự viết thường.

Để có được hình ảnh đầy đủ, chúng ta hãy xem một ví dụ hoàn chỉnh.

Điều này được hiển thị trong mã dưới đây.

Vì vậy, điều đầu tiên là để sử dụng các biểu thức thông thường trong Python, bạn phải nhập mô -đun RE. Vì vậy, đây là điều đầu tiên chúng tôi làm trong mã của chúng tôi ở trên.

Tiếp theo, chúng tôi có cụm từ mà chúng tôi trích xuất, "Có! Nó hoạt động"

Mục tiêu của chúng tôi là viết một biểu thức chính quy có được các ký tự chữ cái viết hoa từ chuỗi này.

Biểu thức để làm như vậy là, các mẫu = ['[a-z]+']]

Tiếp theo, khi bạn đang sử dụng một biểu thức thông thường để khớp với một mẫu trong một chuỗi, bạn phải sử dụng một vòng lặp cho mẫu mà bạn tạo.

Lý do cho điều này là các mẫu kiểm tra nhiều trường hợp của chuỗi. Do đó, nó không chỉ kiểm tra toàn bộ chuỗi, "Có! Nó hoạt động" toàn bộ. Nó đang kiểm tra mọi phiên bản của chuỗi để xem có nhiều khu vực trong chuỗi phù hợp với mẫu này không.

Sau đó chúng tôi tạo một biến có tên là Match và đặt nó bằng, re.findall (p, cụm từ)

Với dòng này, chúng tôi đang tìm kiếm xem bất kỳ cụm từ nào có ký tự viết hoa.

Nếu vậy, Python trả lại nó như một danh sách.

Sau đó chúng tôi in ra kết quả.

Kết quả chúng tôi nhận được được hiển thị dưới đây.

Chúng ta cũng có thể tạo mã với một hàm, để chúng ta có thể gọi chức năng và trả về kết quả.

Mã trên trả về đầu ra giống như mã trước.

Vì vậy, đây là mã đơn giản về cách trích xuất các ký tự chữ hoa từ một chuỗi trong Python bằng cách sử dụng các biểu thức chính quy.

Tài nguyên liên quan

Regex để phù hợp với các từ trường hợp trên

Dưới đây là một minh chứng ngắn gọn về cách sử dụng biểu thức chính quy để xác định các từ chữ hoa trong một loạt các tệp văn bản. & NBSP;

Mục tiêu trong Snip cụ thể này là mở và đọc tất cả các tệp .rtf trong một thư mục nhất định và chỉ xác định các từ chữ hoa xuất hiện trong tệp.

import os
import re

directory = '/path/to/files'

regex = r"\b[A-Z][A-Z]+\b"

for filename in os.listdir(directory):
    if filename.endswith(".rtf"):
        with open(filename, 'r') as f:
            transcript = f.read()
            matches = re.finditer(regex, transcript)
            for match in matches:
                print (match[0])

regextoremoveSpecialCharacters = Hồi [^a-za-z0-9].

RegextoremovenumericCharacters = Hồi [0-9].

Trong những dịp hiếm hoi, Google làm bạn ngạc nhiên khi trả về không có thông tin hữu ích cho tìm kiếm của bạn. Trích xuất số và truy xuất tất cả các từ chữ hoa từ một chuỗi nhất định trong JavaScript là hai vấn đề như vậy. Trong trường hợp sau, có tất cả các loại ví dụ regex để tìm các từ viết hoa hoặc chữ hoa, nhưng không phải là các từ viết hoa.

Ví dụ tương tác

Để có được ý tưởng về những gì chúng tôi muốn đạt được, dưới đây là một chuỗi ví dụ trong TextArea mà bạn có thể sửa đổi và xem kết quả thay đổi:

Từ dưới cùng

Từ ngữ

Một số nền tảng

Trong khi tìm kiếm một giải pháp, tôi đã bắt gặp một câu trả lời liên quan đến Python liên quan đến vấn đề này.

Điều này không liên quan gì đến việc chia tách và dấu câu; Bạn chỉ quan tâm đến các chữ cái (và số), và chỉ muốn một biểu thức thông thường

Nó được tiết lộ thêm:

Nếu bạn không quan tâm đến các con số, hãy thay thế \ w bằng [a-za-z] chỉ cho các chữ cái hoặc [hoặc [a-za-z '] để bao gồm các cơn co thắt

Phải thừa nhận rằng, tôi đã không bao giờ tốt với các biểu thức thông thường, nhưng nếu tìm các từ từ một chuỗi cũng đơn giản như [A-Za-Z], thì chắc chắn chỉ tìm thấy các từ chữ hoa cũng nên dễ dàng tương tự?

Thật không may, nó hoàn toàn phụ thuộc vào những gì bạn coi là một từ chữ hoa hợp lệ, như được thảo luận dưới đây.

Tại sao sự phức tạp?

1 - Số - Số có chữ hoa hay chữ thường? Bạn có xem xét 1, 2, 3, 77, B2B, B2C, HBD2U, PS2, H2O, 3G, 4G, 5G và PS4 Upperase không? (Kiểm tra chủ đề này để tranh luận về học thuật và chi tiết, hầu hết trong số đó đã đi thẳng trên đầu tôi). Cá nhân, tôi nói rằng nó rất chủ quan.Numbers - Are numbers uppercase or lowercase? Would you consider 1, 2, 3, 77, B2B, B2C, HBD2U, PS2, H2O, 3G, 4G, 5G, and PS4 uppercase? (Check this thread for scholarly and detailed debate, most of which went straight over my head). Personally, I’d say it’s highly subjective.

2 - ký tự đặc biệt và dấu chấm câu - có phải là F.B.I toàn bộ chữ hoa không? Tương tự, Filet-O-Fish hoặc OK! ?Special characters and punctuation marks - Is F.B.I as a whole uppercase? Similarly, FILET-O-FISH or OK! ?

3 - co thắt và co thắt kép - Còn bạn thì sao, thiên đường, có nên, không nên, thì không, thì không? (Tôi đoán mọi người sẽ đồng ý rằng họ nên được coi là chữ hoa hoặc chữ thường tùy thuộc vào trường hợp của bảng chữ cái)Contraction and double contractions - what about YOU’VE, HAVEN’T, SHOULD’NT’VE, D’Y’ALL? (I guess everyone would agree they should be considered uppercase or lowercase depending on the case of the alphabets)

Những gì giải pháp?

Một lần nữa, không có giải pháp đúng hay sai cho điều đó. Nó chỉ đơn giản là đến những gì đủ điều kiện là chữ hoa cho bạn.

Đối với tôi, một từ bao gồm sự co lại, co thắt kép hoặc chữ và số đủ điều kiện là chữ hoa nếu tất cả các bảng chữ cái đều có chữ hoa và dưới dạng thường khi tất cả chúng đều là chữ thường. Các con số một mình, tôi tin rằng, không phải là trên cũng không có chữ thường.ALL the alphabets are uppercase, and as lowercase when all of them are lowercase. The numbers alone, I believe, are neither upper nor lower case.

Regexes

Dưới đây là Regexes cho các tiêu chí khác nhau:

1- chữ cái chỉ có chữ cái

const str = "HERE'S AN UPPERCASE PART of the string";
const upperCaseWords = str.match(/(\b[A-Z][A-Z]+|\b[A-Z]\b)/g);

console.log(upperCaseWords);

// => [ 'HERE', 'S', 'AN', 'UPPERCASE', 'PART' ]

Regex giải thích: explained:

  • \ B - Bắt đầu từ
  • [A -Z] - Bất kỳ nhân vật nào giữa Capital A và Z
  • [A -Z]+ - Bất kỳ nhân vật nào giữa Capital A và Z, nhưng trong một trong những lần nhiều hơn và không bị gián đoạn
  • | - HOẶC
  • \ B - Bắt đầu từ
  • [A -Z] - Bất kỳ nhân vật nào giữa Capital A và Z
  • [A -Z]+ - Bất kỳ nhân vật nào giữa Capital A và Z, nhưng trong một trong những lần nhiều hơn và không bị gián đoạn
  • | - HOẶC

\ B - kết thúc từ

G - Toàn cầu (chạy nhiều lần cho đến khi chuỗi kết thúc, không chỉ cho một trường hợp)

Về cơ bản, phía bên phải của hoặc xử lý các chữ cái chữ hoa đơn là những từ trong chính chúng giống như bản thân I I và A A. Phía bên trái xử lý luồng.

const str = "HERE'S AN UPPERCASE PART of the string, What D'Y'ALL think?";
const upperCaseWords = str.match(/(\b[A-Z]['A-Z]+|\b[A-Z]\b)/g);

console.log(upperCaseWords);

// => [ 'HERE\'S', 'AN', 'UPPERCASE', 'PART', 'D\'Y\'ALL' ]

2- Chuẩn dưới chữ cái chỉ bằng chữ cái với co thắt và co thắt kép

Để bao gồm các cơn co thắt và các cơn co thắt kép, hãy bổ sung nhỏ 'trong Regex ban đầu:

const str = "here's a lowercase string for you.";
const lowerCaseWords = str.match(/(\b[a-z][a-z]+|\b[a-z]\b)/g);

console.log(lowerCaseWords);

// => [ 'here', 's', 'a', 'lowercase', 'string', 'for', 'you' ]

3- chữ thường chỉ bằng bảng chữ cái

const str = "here's a lowercase string for you. What d'y'all think?";
const lowerCaseWords = str.match(/(\b[a-z]['a-z]+|\b[a-z]\b)/g);

console.log(lowerCaseWords);

// => [ 'here\'s', 'a', 'lowercase', 'string', 'for', 'you', 'd\'y\'all', 'think' ]

Phiên bản Get All thường xuyên sẽ là:

4- chữ thường chỉ bằng bảng chữ cái với sự co thắt và co thắt kép

5- chữ số chỉ có chữ số

const str = "K2, H2O, B2B, B2C, AK47, 3G, G8, 7UP, gr8, 9, 99"; const upperCaseWords = str.match(/(\b[A-Z0-9][A-Z0-9]+|\b[A-Z]\b)/g); console.log(upperCaseWords); // => [ 'K2', 'H2O', 'B2B', 'B2C', 'AK47', '3G', 'G8', '7UP', '99' ]

Sự bổ sung duy nhất chúng tôi đã thực hiện là 0-9 tại hai nơi. Lưu ý, chúng tôi không thêm 0-9 ở phía bên phải của

const str = "HERE'S AN UPPERCASE PART of the string";
const upperCaseWords = str.match(/(\b[A-Z][A-Z]+|\b[A-Z]\b)/g);

console.log(upperCaseWords);

// => [ 'HERE', 'S', 'AN', 'UPPERCASE', 'PART' ]

1 (hoặc), bởi vì đó sẽ đếm số chữ số đơn là chữ hoa. Thật không may, Regex không tính hai hoặc nhiều số chữ số là chữ hoa (‘99,). Tôi đã có thể giải quyết được điều này. Nhưng một cách giải quyết không phải là regex sẽ là lặp qua mảng và xóa bất kỳ số nào.

6- chữ thường chỉ có chữ số

const str = "K2'S PEAK CLIMBED!";
const upperCaseWords = str.match(/(\b[A-Z0-9]['A-Z0-9]+|\b[A-Z]\b)/g);

console.log(upperCaseWords);

// => [ 'K2\'S', 'PEAK', 'CLIMBED' ]

const str = "gr8, 1to1, one2one, 8pm"; const lowerCaseWords = str.match(/(\b[a-z0-9][a-z0-9]+|\b[a-z]\b)/g); console.log(lowerCaseWords); // => [ 'gr8', '1to1', 'one2one', '8pm' ]

const str = "5g's the latest tech.";
const lowerCaseWords = str.match(/(\b[a-z0-9]['a-z0-9]+|\b[a-z]\b)/g);

console.log(lowerCaseWords);

// => [ '5g\'s', 'the', 'latest', 'tech' ]

7- Sự co thắt dưới chữ số chỉ có và co lại gấp đôi

8- Sự co lại chỉ bằng chữ và số và co lại kép

  • Và chúng tôi đã hoàn thành!
  • Xem thêm
  • JavaScript: Tìm nếu chuỗi có một trường hợp cụ thể
  • Thay thế tất cả các phím của các đối tượng lồng nhau hoặc mảng các đối tượng trong JavaScript
  • Tính tổng giá trị đầu tư với cổ tức được thêm vào
  • Hạn chế nội dung cho người dùng của các quốc gia cụ thể chỉ có JavaScript
  • Theo dõi số lượng người dùng truy cập với bộ nhớ cục bộ JavaScript

Làm thế nào để bạn kiểm tra xem tất cả các chữ cái được viết hoa ở Python?

Trong Python, isupper () là một phương pháp tích hợp được sử dụng để xử lý chuỗi.Phương thức này trả về true nếu tất cả các ký tự trong chuỗi là chữ hoa, nếu không, sẽ trả về FALS FALSE.isupper() is a built-in method used for string handling. This method returns True if all characters in the string are uppercase, otherwise, returns “False”.

Làm thế nào để bạn tìm thấy chữ hoa của một từ trong Python?

Chúng ta hãy thảo luận về một số cách nhất định trong đó chỉ có thể trích xuất các chữ cái chữ hoa từ một chuỗi.Danh sách hiểu và chức năng isupper có thể được sử dụng để thực hiện nhiệm vụ cụ thể này.Độ hiểu hiểu danh sách chủ yếu được sử dụng để lặp lại trong danh sách và chức năng isupper kiểm tra các ký tự chữ hoa.List comprehension and isupper function can be used to perform this particular task. The list comprehension is primarily used to iterate over the list and isupper function checks for the uppercase characters.

Làm cách nào để loại bỏ chữ hoa khỏi chuỗi?

Tạo các biểu thức chính quy để loại bỏ các ký tự chữ hoa, chữ thường, đặc biệt, số và không phải là số từ chuỗi như đã đề cập dưới đây:..
regextoremoveupercasecharacters = Hồi [a-z].
RegextoremOvelowerCaseCharacters = Hồi [A-Z].
regextoremoveSpecialCharacters = Hồi [^a-za-z0-9].
RegextoremovenumericCharacters = Hồi [0-9].