[英]python regular expression to check start and end of a word in a string
[英]Python regular expression to check start string is present or not
我試圖寫一個正則表達式,它應該檢查該行的開始字符串並計算該行中存在的一些字符串。
示例: File.txt
# Compute
[ checking
a = b
a
a=b>c=d
迭代此文件,並忽略以下情況的行
我的狀況:
(line.startswith("[") or line.startswith("#") or line.count("=") > 1 or '=' not in line)
我需要在正則表達式中重新編寫上述條件。
嘗試以下
re.search("^#",line)
re.search("^/[",line)
如何編寫此正則表達式檢查行以“#”或“ [”等條件開頭
對於第一套startswith
,可以使用條件re.match
:
if re.match(r'[\[#]', text):
...
對於第二個條件,可以使用re.findall(如果需要計數):
if len(re.findall('=', text)) != 1:
...
您可以將上面的兩個與and
組合在一起,如下所示:
if re.match(r'[\[#]', text) and len(re.findall('=', text)) != 1:
...
如果您確實希望使用單數正則表達式,則可以使用以下模式;
^[^#\[][^=]*?=[^=]*?$
它將匹配所有不符合您在答案中指定的邏輯的內容-因此將僅提取不符合您提供的邏輯的內容,因此將忽略所有具有指定條件的行。 這種單一模式可以節省您將python邏輯與正則表達式混合使用的過程,這可能會更加一致。
說明:
^
錨定到字符串的開頭 [^#\\[]
確保行首沒有[
或#
[^=]*?
懶惰地匹配除=
以外的任何其他任何內容 =
完全匹配一個=
[^=]*?
懶惰地匹配除=
以外的任何其他任何內容 $
字符串錨的結尾。 例如,如果您正在運行bash來提取所有匹配的行,則可以將其與grep
一起使用,從而忽略所有所需的行,或者使用如下所示的簡單python腳本;
import re pattern = re.compile('^ [^#[] [^ =] ?= [^ =] ?$')
# For loop solution
with open('test.txt') as f:
for line in f:
if pattern.match(line):
print(line)
# Alternative one-line generator expression;
with open('test.txt') as f:
print('\n'.join((line for line in f if pattern.match(line))))
對於給定的輸出文件,兩個都將打印出來;
a = b
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.