我有一个文本,我需要替换原始文本中的一些文本。 因此,例如:
原始文本: 与附件一起出售的公寓。交易日期01-01-2014在同一地区进行。英马库拉达,10。建设年:1974。对hpi(4%),面积(-5.00%)进行了调整。调整后的收市价:1,022.07€/ m2。
我需要找到替换子字符串“ Construction year:”和该子字符串之后的下一个点(。)之间的内容。
最终预期文本: 与附件一起出售的公寓。交易日期01-01-2014在同一地区进行。英马库拉达,10。新建筑年:2010年。对人为中心(4%),面积(-5.00%)进行了调整。调整后的收市价:1,022.07€/ m2。
我得到的最终文本不正确 我得到了最后一个点(。),也没有下一个点,因此子字符串和最后一个点(。)之间的所有内容都被更改。得到这个:
带附件的公寓。交易日期01-01-2014在同一地区进行。英马库拉达,10。新建年份:2010。
var new_genic_comparable_comment = generate_comparable_comment.replace(/(目录参考:)。。([^。] )/,'目录参考:'+ value +')。');
谢谢。
答案 0 :(得分:2)
您使用的(Construction year:).*.([^.]*)
正则表达式捕获了捕获组中的建设年份:。然后.*
与除换行符0+次以外的任何字符匹配,并将匹配到字符串末尾。之后,它会匹配任何字符1次,而不是点号0+次,因此在构建年份:之后的所有时间都将保持匹配。
如果要替换Construction year:
之后的年份,则可以使用捕获组$1
,后跟要替换的匹配项。在捕获组之后,您不能匹配点[^.]+
。
(Construction year: )[^.]+
您可以在多个匹配项的正则表达式末尾添加全局标志/g
。
const regex = /(Construction year: )[^.]+/;
const str = `Flat sold with annexes. Transaction date 01-01-2014 carried out in same area. INMACULADA, 10 . Construction year: 1974. Adjustments made for hpi (4%), area (-5.00%). Closed price after adjustments: 1,022.07 €/m2.`;
const subst = `$12010`;
const result = str.replace(regex, subst);
console.log(result);
答案 1 :(得分:1)
类似的东西应该起作用
var original = 'Flat sold with annexes. Transaction date 01-01-2014 carried out in same area. INMACULADA, 10 . Construction year: 1974. Adjustments made for hpi (4%), area (-5.00%). Closed price after adjustments: 1,022.07 €/m2.'
var newYear = 2010
var updated = original.replace(/Construction year: \d{4}./, `Construction year: ${newYear}`)
console.log(updated)
答案 2 :(得分:1)
在replace
的帮助下,您可以这样做
let str =`Flat sold with annexes. Transaction date 01-01-2014 carried out in same area. INMACULADA, 10 . Construction year: 1974. Adjustments made for hpi (4%), area (-5.00%). Closed price after adjustments: 1,022.07 €/m2.`
let op = str.replace(/(Construction year: )([^.]+)/g,"$1"+"2010" )
console.log(op)
答案 3 :(得分:0)
听起来像是将String.replace()
与某些Regex
结合使用的好时机。
答案 4 :(得分:0)
非常容易配合,只需将replace
与简单的正则表达式/Construction year:.*?\./
一起使用!
无论是什么,您都将从Construction year:
到下一个点!
const text = 'Flat sold with annexes. Transaction date 01-01-2014 carried out in same area. INMACULADA, 10 . Construction year: 1974. Adjustments made for hpi (4%), area (-5.00%). Closed price after adjustments: 1,022.07 €/m2.'
function replace(year) {
return text.replace(/Construction year:.*?\./, 'New construction year: '+year+'.')
}
console.log(replace('2017'));