gpt4 book ai didi

javascript - 用于将引用字符串拆分为其组件的正则表达式

转载 作者:行者123 更新时间:2023-12-03 17:43:53 26 4
gpt4 key购买 nike

用更合适的示例字符串更新了问题

有这样的字符串:

Name I, Some-Thing A, More BC (2016) Example: A string title. Publication. 12:123-54
Name I, Some-Thing A, More BC, et al. (2016) Example: A string title? Publication. 12:123-54
Name I, Some-Thing A, More BC: Example: A string title. Publication 2016; 12: 123-54
Name I, Some-Thing A, More BC: Example: A string title. Publication 2016; 12: 123
Name I, Some-Thing A, More BC (2016): Example: A string title. Publication 12, 123-54
Name I, Some-Thing A, More BC (2016): Example: A string title. Publication 12 (6), 123-54
Name I, Some-Thing A, More BC: Example: A string title. Publication. 2016 June;12(6):123-54. Ignore this

现在我试图提取它们的部分以获得结果:

1: Name I, Some-Thing A, More BC || Name I, Some-Thing A, More BC, et al.
2: 2016
3: Example: A string title? || Example: A string title
4: Publication
5: 12
6: 123-54 || 123

这是我目前得到的:

/([\w-]+ [A-Z]{1,3}(?:, [\w-]+ [A-Z]{1,3})*(?:, et al\.)*)|\((\d{4})\)?|([\w:]+[\w ]+(?=\.|\?|$))|(\d+(?=:))|([\d-]+)/g

https://regex101.com/r/wB3wU4/2

到目前为止感谢 anubhavaJan

但是我没有得到所有的Publication,在最后一个字符串中我想忽略页码之后的所有内容并且我需要忽略页码前面的括号(如果有一个)。

对我来说第二个问题是如何正确处理这些数据,因为匹配的位置可能不同。示例:通常 match[2] 应该是 year,但对于第三个字符串,情况并非如此。所以结果混淆了:-(

最佳答案

如果您的示例输入是您通常会遇到的常见字符串的指示器,则您可能能够更概括这一点:

// Split the string based on parentheses, periods, question-marks and colons
// along with any leading or trailing spaces (i.e. trimming)
var matches = input.split(/\s*[().?:]\s*/);

从可读性和维护的 Angular 来看,正则表达式通常是噩梦,所以如果可以简化它们,我会推荐它。

示例

enter image description here

var input = "Name I, Some A, More BC (2016) A string title. Publication. 12:123-54";
var matches = input.split(/\s*[()?.:]\s*/);
for(var i = 0; i < matches.length; i++){
console.log('[' + i +']:' + ' ' + matches[i]);
}

关于javascript - 用于将引用字符串拆分为其组件的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38059396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com