繁体   English   中英

如何提取正则表达式中由单词和分号分隔的句子?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM