Я сомневаюсь, что если бы это было то, что здесь мы хотим решить.Однако мне кажется, что мы хотим получить значения атрибутов.Если это так, мы можем начать с простого выражения, а затем изменить и изменить, если захотим.Например, мы можем использовать:
(validates|label|name|visibleif)=("(.+?)")\s?
Если мы хотим потерпеть неудачу в других строках, это может быть просто, однако я не уверен в других возможных и желаемых строках, чтобы сделать какое-либо предложение.
RegEx
Если это выражение нежелательно, его можно изменить или изменить в regex101.com .
Схема RegEx
jex.im визуализирует регулярные выражения:
Пример теста
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(validates|label|name|visibleif)=(""(.+?)"")\s?";
string input = @"validates=""required positiveInteger"" label=""Enter the Total Value."" name=""totalvalue"" visibleif=""hasvalue:Yes""
validates=""required positiveInteger"" label=""Enter the Total Value."" name=""totalvalue"" visibleif=""hasvalue:Yes"" fail_attribute=""Undesired""";
RegexOptions options = RegexOptions.Multiline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
Демо
const regex = /(validates|label|name|visibleif)=("(.+?)")\s?/gm;
const str = `validates="required positiveInteger" label="Enter the Total Value." name="totalvalue" visibleif="hasvalue:Yes"
validates="required positiveInteger" label="Enter the Total Value." name="totalvalue" visibleif="hasvalue:Yes" fail_attribute="Undesired"`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}