![](/img/trans.png)
[英]How do i find the numbers that is not followed by a word character with regex?
[英]How do I extract sentences in regex that are separated by a word followed by a semicolon?
我正在尝试编写一些正则表达式模式,以从一块文本中取出位置,功能部件和接受付款的部分。 我正在创建一个显示食物选项的网站,并且在API中,它们的描述部分包含了足够的信息,这就是为什么我要提取特定文本的原因。
我对正则表达式进行了正面和负面的展望,但仍然无法解决我的问题。 我可以选择第二部分之前的所有内容,但前提是在这种情况下我要选择位置。 如果要选择功能,则还要选择上一部分位置。 请参阅以下文本作为示例。
这是我要从中提取的文本:
地点:1号村\\ r \\ n \\ r \\ n功能:种类繁多的产品,包括主菜,热餐,燃木比萨饼,沙拉吧,烧烤用品,定做熟食三明治和包装,便利用品等等\\ r \\ n \\ r \\ n已接受付款:现金,Watcard \\ r \\ n \\ r \\ n这是结识朋友的好地方! 我们内部的UW面包店新鲜出炉的面包和糕点的香气一定会让您深呼吸。 Mudie's提供多种素食,包括即食食品,沙拉吧,烧烤食品,定制熟食三明治和pitas,全套早餐和方便食品。 \\ r \\ n \\ r \\ n妈妈柜台的用餐时间*:\\ r \\ n \\ r \\ n早餐:7:30-11:00 am \\ r \\ n \\ r \\ n午餐:11:30 am-2:00 pm \\ r \\ n \\ r \\ n晚餐:4:30-8:00 pm \\ r \\ n \\ r \\ n *请注意,以上时间可能会有所变动注意 ”
到目前为止,我写道:
/.+?(?=Payment accepted)/
它将选择“付款已接受”部分之前的所有内容。 我也写了
/(Location|Features|Payment accepted):\s{1,4}?[A-Z]+\s?\d?/
在其中选择我想要的三个地方的部分。 我无法将两者联系起来,也无法在没有其他部分的情况下提出能够选择所需内容的任何内容。 任何帮助,将不胜感激。
因此,在上述情况下,我提取的部分将是:
Location: Village 1
Features: A multitude of offerings, including entrees, hot meals, wood-fired pizza, salad bar, grill items, made-to-order deli sandwiches & wraps, convenience items and much more
Payment accepted: cash, Watcard
您可以使用此正则表达式提取文本的这三个部分,
/Location:\s*([^\v]*)\s*Features:\s*([^\v]*)Payment accepted:(.*?)(?=\r\n)/
这是相同的JS代码。
var myString = "Location: Village 1 \\r\\n\\r\\nFeatures: A multitude of offerings, including entrees, hot meals, wood-fired pizza, salad bar, grill items, made-to-order deli sandwiches & wraps, convenience items and much more\\r\\n\\r\\nPayment accepted: cash, Watcard \\r\\n\\r\\nThis is a great place to meet your friends! The aroma of fresh baked breads and pastries from our in-house UW Bakery will surely make you take a deep breath. Mudie's offers a large selection of vegetarian foods, grab n' go items, salad bar, grill items, made-to-order deli sandwiches and pitas, full breakfast, and convenience foods. A hot entrée item and side dishes are available every lunch and dinner hour.\\r\\n\\r\\nMeal hours for Mom's Counter*:\\r\\n\\r\\nBreakfast: 7:30 - 11:00 am\\r\\n\\r\\nLunch:11:30 am - 2:00 pm\\r\\n\\r\\nDinner: 4:30 - 8:00 pm \\r\\n\\r\\n*please note, these hours are subject to change without notice "; // I want "abc" var arr = /Location:\\s*([^\\v]*)\\s*Features:\\s*([^\\v]*)Payment accepted:([^\\r\\n]*)/.exec(myString); console.log("Location --> "+arr[1]); console.log("Features --> "+arr[2]); console.log("Payment accepted --> "+arr[3]);
如果我正确地理解了这一点,并且您确定各节的重复顺序相同,那么您可以将各行的正则表达式放在一起。
Location:\\s?([\\w\\d ]+)\\s{1,5}Features:\\s+(.+)\\s{1,5}Payment accepted:\\s?(.+)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.