Javascript 替换包含文档注释的代码行
Javascript replace code line including doc comment
我正在使用 AutoRest 生成客户端代码。使用 AutoRest,您可以添加自定义转换脚本来更改生成的代码。
我正在尝试从使用 Javascript 正则表达式替换生成的代码中删除两个接口属性。但我不知道正确的正则表达式是什么。
这是我需要修改的一段代码:
// <auto-generated>
// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is
// regenerated.
// </auto-generated>
namespace Test.AcmeWeb.Repositories.Test.Products
{
using Microsoft.Rest;
using Models;
using Newtonsoft.Json;
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
/// <summary>
/// Acme Products API
/// </summary>
public partial interface IApiProducts : System.IDisposable
{
/// <summary>
/// The base URI of the service.
/// </summary>
System.Uri BaseUri { get; set; }
/// <summary>
/// Gets or sets json serialization settings.
/// </summary>
JsonSerializerSettings SerializationSettings { get; }
/// <summary>
/// Gets or sets json deserialization settings.
/// </summary>
JsonSerializerSettings DeserializationSettings { get; }
/// <summary>
/// CreateAppointment
/// </summary>
/// <remarks>
/// Creates an appointment, given a timeslot id, order id and remark,
/// wrapped in a requestmodel.
/// </remarks>
/// <param name='label'>
/// Possible values include: 'default', 'Acme'
/// </param>
/// <param name='body'>
/// </param>
/// <param name='customHeaders'>
/// The headers that will be added to request.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
Task<HttpOperationResponse<ErrorResponse>> ApiProductsAppointmentsCreateAppointmentPUTWithHttpMessagesAsync(string label, RequestDataAppointmentRequestModel body = default(RequestDataAppointmentRequestModel), Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken));
我特别想从此代码中删除以下两行(包括注释):
/// <summary>
/// Gets or sets json serialization settings.
/// </summary>
JsonSerializerSettings SerializationSettings { get; }
/// <summary>
/// Gets or sets json deserialization settings.
/// </summary>
JsonSerializerSettings DeserializationSettings { get; }
我可以 运行 两个单独的正则表达式替换调用一次替换一个。我的正则表达式目前第一行看起来像这样,包括评论。
\/\/\/ <summary>\r\n[\s]+\/\/\/Gets or sets json serialization[^]+JsonSerializerSettings SerializationSettings { get; }
但不幸的是,这似乎与任何模式都不匹配。
我必须如何更改我的正则表达式才能使其正常工作?
可在此处找到现场演示:https://regexr.com/5eleb
文中有序列化和反序列化,\r\n
中的\r
可选
要匹配这两个部分,您可以使用
\/\/\/ <summary>\r?\n[^\S\r\n]*\/\/\/ Gets or sets json (?:de)?serialization.*\r?\n[^\S\r\n]*\/\/\/ <\/summary>\r?\n[^\S\r\n]*JsonSerializerSettings (?:De)?[sS]erializationSettings { get; }\s*
说明
\/\/\/ <summary>\r?\n
匹配摘要部分的开头
[^\S\r\n]*\/\/\/
匹配不带换行符的可选空白字符和 ///
Gets or sets json (?:de)?serialization.*\r?\n
将文本与可选的 de
匹配,该行的其余部分包括换行符
[^\S\r\n]*\/\/\/ <\/summary>\r?\n
匹配可选的空白字符,///
和包括换行符的最后摘要部分
[^\S\r\n]*JsonSerializerSettings
匹配可选的空白字符后跟 JsonSerializerSettings
这两个部分
(?:De)?[sS]erializationSettings { get; }\s*
匹配可选的 De
,然后是大写或小写 s
,后跟 erializationSettings
和该行的其余部分。 \s*
将匹配尾随的空白字符,包括换行符
在替换中使用空字符串。
看到一个regex demo
您也可以将其作为一个块进行匹配,但在您尝试的模式中,它不会考虑结束摘要部分。您还必须使 [^]+?
非贪婪以防止过度匹配。
\/\/\/ <summary>\r?\n[\s]+\/\/\/ Gets or sets json (?:de)?serialization[^]+?JsonSerializerSettings (?:De)?[sS]erializationSettings { get; }
我正在使用 AutoRest 生成客户端代码。使用 AutoRest,您可以添加自定义转换脚本来更改生成的代码。
我正在尝试从使用 Javascript 正则表达式替换生成的代码中删除两个接口属性。但我不知道正确的正则表达式是什么。
这是我需要修改的一段代码:
// <auto-generated>
// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is
// regenerated.
// </auto-generated>
namespace Test.AcmeWeb.Repositories.Test.Products
{
using Microsoft.Rest;
using Models;
using Newtonsoft.Json;
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
/// <summary>
/// Acme Products API
/// </summary>
public partial interface IApiProducts : System.IDisposable
{
/// <summary>
/// The base URI of the service.
/// </summary>
System.Uri BaseUri { get; set; }
/// <summary>
/// Gets or sets json serialization settings.
/// </summary>
JsonSerializerSettings SerializationSettings { get; }
/// <summary>
/// Gets or sets json deserialization settings.
/// </summary>
JsonSerializerSettings DeserializationSettings { get; }
/// <summary>
/// CreateAppointment
/// </summary>
/// <remarks>
/// Creates an appointment, given a timeslot id, order id and remark,
/// wrapped in a requestmodel.
/// </remarks>
/// <param name='label'>
/// Possible values include: 'default', 'Acme'
/// </param>
/// <param name='body'>
/// </param>
/// <param name='customHeaders'>
/// The headers that will be added to request.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
Task<HttpOperationResponse<ErrorResponse>> ApiProductsAppointmentsCreateAppointmentPUTWithHttpMessagesAsync(string label, RequestDataAppointmentRequestModel body = default(RequestDataAppointmentRequestModel), Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken));
我特别想从此代码中删除以下两行(包括注释):
/// <summary>
/// Gets or sets json serialization settings.
/// </summary>
JsonSerializerSettings SerializationSettings { get; }
/// <summary>
/// Gets or sets json deserialization settings.
/// </summary>
JsonSerializerSettings DeserializationSettings { get; }
我可以 运行 两个单独的正则表达式替换调用一次替换一个。我的正则表达式目前第一行看起来像这样,包括评论。
\/\/\/ <summary>\r\n[\s]+\/\/\/Gets or sets json serialization[^]+JsonSerializerSettings SerializationSettings { get; }
但不幸的是,这似乎与任何模式都不匹配。
我必须如何更改我的正则表达式才能使其正常工作?
可在此处找到现场演示:https://regexr.com/5eleb
文中有序列化和反序列化,\r\n
\r
可选
要匹配这两个部分,您可以使用
\/\/\/ <summary>\r?\n[^\S\r\n]*\/\/\/ Gets or sets json (?:de)?serialization.*\r?\n[^\S\r\n]*\/\/\/ <\/summary>\r?\n[^\S\r\n]*JsonSerializerSettings (?:De)?[sS]erializationSettings { get; }\s*
说明
\/\/\/ <summary>\r?\n
匹配摘要部分的开头[^\S\r\n]*\/\/\/
匹配不带换行符的可选空白字符和///
Gets or sets json (?:de)?serialization.*\r?\n
将文本与可选的de
匹配,该行的其余部分包括换行符[^\S\r\n]*\/\/\/ <\/summary>\r?\n
匹配可选的空白字符,///
和包括换行符的最后摘要部分[^\S\r\n]*JsonSerializerSettings
匹配可选的空白字符后跟JsonSerializerSettings
这两个部分(?:De)?[sS]erializationSettings { get; }\s*
匹配可选的De
,然后是大写或小写s
,后跟erializationSettings
和该行的其余部分。\s*
将匹配尾随的空白字符,包括换行符
在替换中使用空字符串。
看到一个regex demo
您也可以将其作为一个块进行匹配,但在您尝试的模式中,它不会考虑结束摘要部分。您还必须使 [^]+?
非贪婪以防止过度匹配。
\/\/\/ <summary>\r?\n[\s]+\/\/\/ Gets or sets json (?:de)?serialization[^]+?JsonSerializerSettings (?:De)?[sS]erializationSettings { get; }