0

我有两个字符串的变体,例如:

The Student's Companion *作者:Alcock, Pete;May, Margaret;Wright, Sharon *MIL EAN/ISBN: 9781283333115

Java 编程:Java 专家*作者:Sarang, Poornachandra *MIL EAN/ISBN:9781280117268

现在,我想抓住第一作者:Alcock, Pete aand Saran, Pooranachandra。

现在在 Javascript 中,我正在尝试做:

var regex = new RegExp("(Author:)\\s(.+)(?=;|MIL)");
var regexVal = value.match(regex);
console.log(regexVal);

或者

var regex = new RegExp("(Author:)\\s(.+)(?=MIL)");
var regexVal = value.match(regex);
console.log(regexVal);

如果有一个作者,第二个正则表达式工作得很好,但是,如果有多个作者,我想选择价值直到第一个不是MIL

| 匹配任一部分,所以,它不应该在第一次时停止;找到了吗?

问候, 狂欢

4

2 回答 2

1

你可以使用:

var regex = /Author:\s([^;*]+)/;

或者,如果这些*不在字符串中:

var regex = /Author:\s((?:(?!MIL)[^;])+)/;

或者

var regex = /Author:\s([^;])+?)(?=;|MIL)/;
于 2013-04-02T09:59:19.717 回答
0

通过将正则表达式修改为解决了我的问题:

(Author:)(([^;])+)(;|MIL)

这个正则表达式说: 应该以“作者:”开头,否定 ; 并且应该以 ; 结尾 或 MIL。

谢谢

于 2013-04-02T10:45:27.123 回答