У меня есть эти строки.
Я хочу, чтобы для каждой строки, содержащей «Id» любого случая, заменить «string» на int.
Не уверен, как сделать группировку для этого.
это мой список
Я пробовал что-то вроде этого ^(.*(string).*(Id).*)$
и заменил на \1
или \2
public string ID {get; set}
public string IdSite {get; set}
public string IdParent {get; set}
public string IdPageType {get; set}
public string PageType {get; set}
public string IdTemplate {get; set}
public string TemplateName {get; set}
public string IdTemplateParent {get; set}
@revo, спасибо, это сработало, если вы опубликуете ответ, я его не приму
Вы можете использовать
(?i)^(\s*\w+\s+)string(\s+Id)
Или, если ID
может быть внутри слова
(?i)^(\s*\w+\s+)string(\s+\w*Id)
^^^
Замените на $1int$2
. См. демонстрация регулярных выражений. См. график регулярных выражений:
Подробности
(?i)
- встроенная опция без учета регистра^
- начало строки (или строки, если она не используется в текстовом редакторе, используйте (?im)
в начале вместо (?i)
)(\s*\w+\s+)
- Группа 1 ($1
): 0+ пробелов, 1+ словесных символов, 1+ пробеловstring
- string
слово(\s+Id)
- Группа 2 ($2
): 1+ пробелов и ID
строка (если вы используете \w*
в этом групповом шаблоне, будет соответствовать 0+ словесных символов).Вам не нужно сопоставлять всю строку или что-то захватывать. Вместо этого попробуйте:
string(?=.*?id)
позитивный прогноз утверждает, что id
идет где-то после string
. Кроме того, для соответствия id
в любой форме вы должны включить поиск без учета регистра или использовать [iI][dD]
вместо id
.
Попробуйте
string(?=.*?id)
и включите поиск без учета регистра.