以下代码是用于从数据帧中查找子字符串的正则表达式。
如何修改正则表达式如下:
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
谢谢。
答案 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();
},
这里的主要内容是外观,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])
类似的替换组,如上所示。
此外,如果任何关键字都包含应被视为文字字符的特殊正则表达字符,(?:...|...)
会很方便。
[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]