簡體   English   中英

如何搜索字符串中的多個單詞字符串(完全匹配)?

[英]How to search a multiple-word-string (exact match) in a string?

我已經找到了與此類似的問題,但是它們並不是我要找的東西,因為它們是在詢問不重復的特定單詞和單數單詞。 我有一個字符串k(這是字典中的鍵),該字符串是由一個函數自動生成的(取決於用戶輸入),它看起來像這樣:“ condition1 ^ condition2 ^ condition3 ^ ...”(至少一個條件) 。

每個條件可以如下所示:

  1. a> b
  2. a <= c
  3. b <a <= c

現在,我要嘗試的是在ka中搜索某個字符串,讓我們說“ a <= c”作為條件:如果k中的“ a <= c”,則...。 問題是可能存在“ aa”,“ ba”,“ aaa”,“ ca”等而不是“ a”,在這種情況下,我不希望條件為True。 我該如何處理? 我一直在閱讀re模塊文檔,但是很困惑

UPDATE我最初按照alec_djinn的建議使用了re.findall,使其適應我的需求:

'(?<![^\s])a <= c(?![^\s])'

但是我有一些問題。 所以我決定不使用正則表達式,而是檢查“ a <= c”是否等於

g for g in [k.split()[g]+k.split()[g+1]+k.split()[g+2] for g in xrange(len(k.split())-2)]. 

有用。 對這個解決方案有什么意見嗎?

\ba <= c\b

你可以做一個re.search這一點。

您可以使用(?<![az])表示“如果前面沒有任何小寫字母”。

這里舉個例子。

import re

str_a = 'b a <= c'
str_b = 'ba <= c'

m = re.findall('(?<![a-z])a <= c', str_a)
n = re.findall('(?<![a-z])a <= c', str_b)
print m, n

它打印:

['a <= c'] []

它僅找到str_a的匹配項,而不找到str_b的匹配項。

我可能會使用vks的解決方案,這似乎是最簡單的。 但是,如果您想避免使用正則表達式,並且知道字符串到處都是單個空格,那么您也可以這樣做:

(' ' + condition + ' ') in (' ' + k + ' ')

您涉及拆分字符串並將其重新組合的解決方案將起作用,但僅適用於3個元素的字符串,並且將花費更多的時間和內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM