如何编写if-then-else正则表达式?

时间:2018-06-12 09:37:44

标签: python regex python-3.x regex-lookarounds lookbehind

以下代码是用于从数据帧中查找子字符串的正则表达式。

如何修改正则表达式如下:

if x[0] is an English letter, that is, [a-zA-Z], then keep the first `\b`, else remove it
AND
if x[-1] is an English letter, that is, [a-zA-Z], then keep the last `\b`, else remove it

for k, v in keyword.items():
        pat = '|'.join(r"\b{}\b".format(x) for x in v)
        df[str(k)] = df['string'].str.contains(pat).astype(int)

String = 'BEAUTY Company is good, 歡迎~~YOU, SALE'
BEA: not match
Com: not match
歡迎: match
SALE: match

谢谢。

2 个答案:

答案 0 :(得分:3)

您可以使用

eventRender: function(event, element) {
      element.find(".fc-event-title").remove();
      var new_description = '';
      new_description = '<strong>'+ event.start_time +' - '+ event.end_time +'</strong><br/>'
          +'<strong>Name : </strong>' + event.display_name + '<br/>'
          + '<strong>Branch : </strong>' + event.customer_branch + '<br/>'
          + '<strong>Event by: </strong>' + event.event_by + '<br/>'
          + '<strong>Show as: </strong>' + event.show_as + '<br/>'
          + '<strong>Date:</strong>' + event.date + '<br/>';
      element.append(new_description);
      $(".loader").fadeOut();
},
viewRender: function(view, element){
      $(".loader").fadeIn();
},

请参阅online regex demo

这里的主要内容是外观,pat = r'(?!(?<=[A-Za-z])[A-Za-z])(?:{})(?<![A-Za-z](?=[A-Za-z]))'.format("|".join([re.escape(x) for x in v])) (?!(?<=[A-Za-z])[A-Za-z])

如果在当前位置的右边(即关键字的第一个字符)是一个ASCII字母,前面带有另一个ASCII字母,则(?<![A-Za-z](?=[A-Za-z]))是一个负面预测,使匹配失败(选中)积极的外观(?!(?<=[A-Za-z])[A-Za-z]))。

如果在当前位置的左边(即关键字的最后一个字符)是一个ASCII字母,后面跟着另一个ASCII字母,则(?<=[A-Za-z])是一个负面的后观,使得匹配失败。积极的前瞻(?<![A-Za-z](?=[A-Za-z])))。

请注意,您不必为正则表达式中的每个替代项添加这些外观,只需使用它们来封装您可以动态构建的(?=[A-Za-z])类似的替换组,如上所示。

此外,如果任何关键字都包含应被视为文字字符的特殊正则表达字符,(?:...|...)会很方便。

Python demo

[re.escape(x) for x in v]

答案 1 :(得分:1)

你可以这样做

 import re

 if (re.search(r'[a-zA-Z]',x[0]):
    print(x[0])
 else:
    x = x[1:]

 if(re.search(r'[a-zA-Z]',x[-1]):
    print(x[-1])
 else:
    x = x[:-1]