【发布时间】:2021-02-05 04:03:27
【问题描述】:
我正在使用 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));
我特别想从此代码中删除以下两行(包括 cmets):
/// <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
【问题讨论】:
-
试试这个regex101.com/r/sYKVjy/1
\/\/\/ <summary>.*\r?\n.*Gets or sets json (?:de)?serialization.*\r?\n.*\/\/\/ <\/summary>\r?\n.*JsonSerializerSettings (?:De)?[sS]erializationSettings { get; }\s*
标签: javascript regex regexp-replace