87
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi muốn sử dụng re.MULTILINE
nhưng không phải re.DOTALL
, để tôi có thể có một regex bao gồm cả ký tự đại diện "bất kỳ ký tự" nào và ký tự đại diện .
bình thường không phù hợp với newlines.NOT
re.DOTALL
, so that I can have a regex that includes both an "any character" wildcard and the normal .
wildcard that doesn't match newlines.
Có cách nào để làm việc này không? Tôi nên sử dụng gì để phù hợp với bất kỳ nhân vật nào trong những trường hợp mà tôi muốn bao gồm các dòng mới?
Đã hỏi ngày 23 tháng 10 năm 2015 lúc 22:13Oct 23, 2015 at 22:13
Jason Sjason sJason S
181K161 Huy hiệu vàng586 Huy hiệu bạc946 Huy hiệu Đồng161 gold badges586 silver badges946 bronze badges
5
Để phù hợp với một dòng mới hoặc "bất kỳ biểu tượng nào" mà không có ____ 10/________ 8, bạn có thể sử dụng bất kỳ điều nào sau đây:
2 - Nhóm sửa đổi nội tuyến có cờimport re text = """abc 123 def 356 more text...""" print[ re.findall[r"^123[?s:.*?]^3.*", text, re.M] ] # => ['123\ndef\n356'] print[ re.findall[r"^123[\w\W]*?^3.*", text, re.M] ] # => ['123\ndef\n356']
3 trên SETS một phạm vi trong đó tất cả các mẫuimport re text = """abc 123 def 356 more text...""" print[ re.findall[r"^123[?s:.*?]^3.*", text, re.M] ] # => ['123\ndef\n356'] print[ re.findall[r"^123[\w\W]*?^3.*", text, re.M] ] # => ['123\ndef\n356']
.
đều khớp với bất kỳ char nào bao gồm cả chars line breakBất kỳ công việc nào sau đây:
[\s\S]
[\w\W]
[\d\D]
Ý tưởng chính là các lớp tốc ký đối diện bên trong một lớp ký tự phù hợp với bất kỳ biểu tượng nào có trong chuỗi đầu vào.
So sánh nó với
import re
text = """abc
123
def
356
more text..."""
print[ re.findall[r"^123[?s:.*?]^3.*", text, re.M] ]
# => ['123\ndef\n356']
print[ re.findall[r"^123[\w\W]*?^3.*", text, re.M] ]
# => ['123\ndef\n356']
5 và các biến thể khác với sự xen kẽ, giải pháp lớp ký tự hiệu quả hơn nhiều vì nó liên quan đến việc quay lại ít hơn nhiều [khi được sử dụng với bộ định lượng import re
text = """abc
123
def
356
more text..."""
print[ re.findall[r"^123[?s:.*?]^3.*", text, re.M] ]
# => ['123\ndef\n356']
print[ re.findall[r"^123[\w\W]*?^3.*", text, re.M] ]
# => ['123\ndef\n356']
6 hoặc import re
text = """abc
123
def
356
more text..."""
print[ re.findall[r"^123[?s:.*?]^3.*", text, re.M] ]
# => ['123\ndef\n356']
print[ re.findall[r"^123[\w\W]*?^3.*", text, re.M] ]
# => ['123\ndef\n356']
7]. So sánh ví dụ nhỏ: Phải mất import re
text = """abc
123
def
356
more text..."""
print[ re.findall[r"^123[?s:.*?]^3.*", text, re.M] ]
# => ['123\ndef\n356']
print[ re.findall[r"^123[\w\W]*?^3.*", text, re.M] ]
# => ['123\ndef\n356']
8 45 bước để hoàn thành và phải mất import re
text = """abc
123
def
356
more text..."""
print[ re.findall[r"^123[?s:.*?]^3.*", text, re.M] ]
# => ['123\ndef\n356']
print[ re.findall[r"^123[\w\W]*?^3.*", text, re.M] ]
# => ['123\ndef\n356']
9 chỉ 2 bước.Xem bản demo Python nơi tôi đang khớp một dòng bắt đầu với
[\S\n\t\v ]
0 và cho đến lần xuất hiện đầu tiên của [\S\n\t\v ]
1 khi bắt đầu một dòng và bao gồm cả phần còn lại của dòng đó:import re
text = """abc
123
def
356
more text..."""
print[ re.findall[r"^123[?s:.*?]^3.*", text, re.M] ]
# => ['123\ndef\n356']
print[ re.findall[r"^123[\w\W]*?^3.*", text, re.M] ]
# => ['123\ndef\n356']
Đã trả lời ngày 23 tháng 10 năm 2015 lúc 22:16Oct 23, 2015 at 22:16
Wiktor Stribiżewwiktor StribiżewWiktor Stribiżew
581K34 Huy hiệu vàng400 Huy hiệu bạc503 Huy hiệu Đồng34 gold badges400 silver badges503 bronze badges
4
Khớp với bất kỳ ký tự nào [bao gồm cả dòng mới]:
Biểu thức chính quy: [Lưu ý việc sử dụng không gian '' cũng ở đó]
[\S\n\t\v ]
Example:
import re
text = 'abc def ###A quick brown fox.\nIt jumps over the lazy dog### ghi jkl'
# We want to extract "A quick brown fox.\nIt jumps over the lazy dog"
matches = re.findall['###[\S\n ]+###', text]
print[matches[0]]
'Trận đấu [0]' sẽ chứa: 'Một con cáo màu nâu nhanh. \ Nit nhảy qua con chó lười biếng'
'A quick brown fox.\nIt jumps over the lazy
dog'
Mô tả về '\ s' Python Docs:
[\S\n\t\v ]
2 khớp với bất kỳ ký tự nào không phải là ký tự khoảng trắng.[Xem: //docs.python.org/3/l LI
Đã trả lời ngày 13 tháng 7 năm 2020 lúc 15:54Jul 13, 2020 at 15:54
Ali Sajjadali SajjadAli Sajjad
2.53922 Huy hiệu bạc33 Huy hiệu đồng22 silver badges33 bronze badges
2
2.4. & Nbsp; phù hợp với bất kỳ ký tự nào
Vấn đề
Kết hợp một nhân vật được trích dẫn. Cung cấp một giải pháp cho phép bất kỳ ký tự đơn, ngoại trừ một đường ngắt, giữa các trích dẫn. Cung cấp một cái khác thực sự cho phép bất kỳ nhân vật, bao gồm cả việc phá vỡ dòng.
Dung dịch
Bất kỳ nhân vật nào ngoại trừ dòng phá vỡ dòng
'.'
Các tùy chọn regex: Không có [không phải là tùy chọn của DOT DOT phù hợp với dòng phá vỡ dòng] None [the “dot matches line breaks” option must not be set] |
Hương vị Regex: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby .NET, Java, JavaScript, PCRE, Perl, Python, Ruby |
Bất kỳ nhân vật nào bao gồm cả phá vỡ dòng
'.'
Các tùy chọn regex: Không có [không phải là tùy chọn của DOT DOT phù hợp với dòng phá vỡ dòng] Dot matches line breaks |
Hương vị Regex: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby .NET, Java, PCRE, Perl, Python, Ruby |
Tùy chọn Regex: DOT khớp với các dòng phá vỡ dòng None |
Hương vị Regex: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby .NET, Java, PCRE, Perl, Python, Ruby |
Bất kỳ nhân vật nào bao gồm cả phá vỡ dòng
Bất kỳ nhân vật nào ngoại trừ dòng phá vỡ dòng
'.'
Các tùy chọn regex: Không có [không phải là tùy chọn của DOT DOT phù hợp với dòng phá vỡ dòng]
Hương vị Regex: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby