Pour une raison quelconque, les caractères de nouvelle ligne ne fonctionnent pas avec ma regex.
Voici la première partie du script PowerShell. Ce morceau de code est utilisé pour obtenir un ensemble de fichiers markdown. À des fins de test, je n'utilise que le premier fichier.
Le code récupère ensuite le contenu du fichier.
$path = 'C:\Users\Will\Desktop\ProjectTemp'
$filelist = ls $path -filter *.md -recurse
[string[]]$currentfile_path = $filelist[0].FullName
$currentfile_data = Get-Content $currentfile_path
C'est le code qui pose problème. Il fonctionne bien partout ailleurs, mais PowerShell ne trouve pas les correspondances pour les remplacer. Plus précisément, j'ai constaté que les caractères de nouvelle ligne ne fonctionnent pas. Rien de ce que j'ai essayé ne fonctionne.
$currentfile_data -Replace '([ \t]*)\| (.*) \| (.*) \| (.*) \|\r\n[ \t]*\| .* \| .* \| .* \|\r\n[ \t]*\| (.*) \| (.*) \| (.*) \|','$1<table>\n$1\t<tr align="center" valign="middle">\n$1\t\t<th>$2</th>\n$1\t\t<th>$3</th>\n$1\t\t<th>$4</th>\n$1\t</tr>\n$1\t<tr align="center" valign="middle">\n$1\t\t<td>$5</td>\n$1\t\t<td>$6</td>\n$1\t\t<td>$7</td>\n$1\t</tr>\n$1</table>'
Ceci est destiné à trouver la regex : '([ \t]*)\| (.*) \| (.*) \| (.*) \|\r\n[ \t]*\| .* \| .* \| .* \|\r\n[ \t]*\| (.*) \| (.*) \| (.*) \|'
et le remplacer par :
$1<table>\n$1\t<tr align="center" valign="middle">\n$1\t\t<th>$2</th>\n$1\t\t<th>$3</th>\n$1\t\t<th>$4</th>\n$1\t</tr>\n$1\t<tr align="center" valign="middle">\n$1\t\t<td>$5</td>\n$1\t\t<td>$6</td>\n$1\t\t<td>$7</td>\n$1\t</tr>\n$1</table>'
A quoi doivent ressembler les entrées et les sorties :
| th1 | th2 | th3 |
| :-: | :-: | :-: |
| td1 | td2 | td3 |
<table>
<tr align="center" valign="middle">
<th>th1</th>
<th>th2</th>
<th>th3</th>
</tr>
<tr align="center" valign="middle">
<td>td1</td>
<td>td2</td>
<td>td3</td>
</tr>
</table>
Y a-t-il un moyen d'y remédier ? Est-ce que je fais quelque chose de mal ?