问题描述
我有一个列表#include <stdio.h>
#include <stdlib.h>
struct Node
{
int data;
struct Node* next;
};
struct Node* Insert(struct Node* head,int data)
{
struct Node* temp = (struct Node*) malloc(sizeof(struct Node));
temp->data = data;
temp->next = NULL;
//If the list is empty
if (head == NULL)
{
head = temp;
}
else //The list is not empty
{
struct Node* temp1 = head;
while (temp1->next != NULL)
{
temp1 = temp1->next;
}
temp1->next = temp;
}
return head;
}
void Print(struct Node* head)
{
struct Node* temp = head;
while (temp != NULL)
{
printf("%d ",temp->data);
temp = temp->next;
}
printf("\n");
}
struct Node* Reverse(struct Node* head)
{
struct Node* *prev,*current,*next;
current = head;
prev = NULL;
while (current != NULL)
{
next = current->next;
current->next = prev;
prev = current;
current = next;
}
head = prev;
return head;
}
int main()
{
struct Node* head = NULL;
printf("Enter the length of the linked list you want to create: ");
int length;
scanf("%d",&length);
printf("Enter the value you want to input: ");
int i;
for (i = 0; i < length; i++)
{
int x;
scanf("%d",&x);
head = Insert(head,x);
}
printf("Given linked list\n");
Print(head);
head = Reverse(head);
printf("\nReversed linked list \n");
Print(head);
return 0;
}
:
input
如何从中提取以下字符串:
['ICE ERIE','ERIE','o9 ManGo','ManGo SLACKCURRAN 120mL','SLACKCURRAN']
另一个例子:
'ManGo SLACKCURRAN 120mL'
:
Input
['SWANSON','Apple cider Vinegar Food Supplement Supplement mg per tablet DOUBLE STRENGTH FORMULA per tablet 1 NET','cider','Vinegar','Food Supplement DOUBLE','Supplement','200','per','tablet','DOUBLE','TABLETS 1 NET WEIGHT: 62g','1','NET','WEIGHT:']
:
Output
我的尝试:
'TABLETS 1 NET WEIGHT: 62g'
解决方法
您可以使用
import re
input_l = ['ICE ERIE','ERIE','o9 ManGo','ManGo SLACKCURRAN 120mL','SLACKCURRAN']
reg = re.compile(r'\d*\.?\d+\s*(?:ounce|fl oz|foot|sq ft|pound|gram|inch|sq in|ml)\b',re.I)
print( list(filter(reg.search,input_l)) )
# => ['ManGo SLACKCURRAN 120mL']
请参见Python demo。
注释:
- 使用
re.search
在字符串内的任何位置搜索匹配项(re.match
仅在字符串开头搜索),请参见this thread - 删除
^
(字符串的开头)和$
(字符串的结尾)锚点 - 使用
re.I
标志进行不区分大小写的匹配 -
\d*\.?\d+
是匹配整数或浮点数的更方便的模式,因为它还支持.95
之类的数字 - 以单词边界结束模式以匹配整个单词的度量单位(注意字符串文字前的
r
前缀)。